Hello,
I have installed ejabberd 1.1.2 onto one of servers in LAN in our company. Its name is "srvis03" and it has IP 10.0.2.3. So I have accounts like "admin@srvis03" etc. Everything works fine from workstations in LAN (we use Miranda and PSI). But then I come home...
In our ADSL modem configuration we set redirecting of inbound connection 5222/tcp to "srvis03". Now I am trying to connect from home. It should work, you may say. Well, it doesn't.
Miranda pops up with small window. Its heading is "Jabber error" and its content is "host-unknown: (null)".
On every connection attempt ejabberd writes to ejabberd.log these two lines (and nothing more):
=INFO REPORT==== 2007-02-20 17:22:40 ===
I(<0.223.0>:ejabberd_listener:90): (#Port<0.257>) Accepted connection {{***HOME IP***},1068} -> {{10,0,2,3},5222}
In Miranda Jabber plugin I've set up:
Username: admin
Password: ***ADMIN PASSWORD*** (it is correct, I am sure)
Login server: ***COMPANY IP***
Port: 5222
That's all. No SSL, no TLS.
I have also turned on verbose logging in Miranda network section. Here is what I get when I attempt to connect to company's ejabberd server:
[17:40:56 JABBER] PS_SETSTATUS( 40072 )
[17:40:56 JABBER] Thread started: type=0
[17:40:56 JABBER] _xmpp-client._tcp.***COMPANY IP*** not resolved
[17:40:56 JABBER] Thread type=0 server='***COMPANY IP***' port='5222'
[17:40:57 JABBER] (1172) Connected to ***COMPANY IP***:5222
[17:40:57 JABBER] Local IP = 85.92.36.119
[17:40:57 JABBER] Stream is initializing after connect
[17:40:57 JABBER] (00AD5F50:1172) Data sent
<?xml version='1.0' encoding='UTF-8'?>
[17:40:57 JABBER] Entering main recv loop
[17:40:57 JABBER] (00AD5F50:1172) Data received
<?xml version='1.0'?>
[17:40:57 JABBER] recvResult = 255
[17:40:57 JABBER] XML: skip <?xml> tag
[17:40:57 JABBER] IqAdd id=6, proc=0, func=0x3250b15d
[17:40:57 JABBER] (00AD5F50:1172) Data sent
admin
[17:40:58 JABBER] (00AD5F50:1172) Data sent
[17:40:58 JABBER] Netlib_Send() failed, error=10053
[17:40:58 JABBER] Exiting KeepAliveThread
[17:40:58 JABBER] (00AD5F50:4294967295) Connection closed
[17:40:58 JABBER] bytesParsed = 255
[17:40:58 JABBER] Netlib_Recv() failed, error=87
[17:40:58 JABBER] recvResult = 0
[17:40:58 JABBER] Thread ended: type=0 server='***COMPANY IP***'
[17:40:58 JABBER] Exiting ServerThread
[17:40:59 JABBER] SetAwayMsg called, wParam=40072 lParam=Yep, I'm here.
And here is content of our ejabberd.cfg:
% $Id: $
%override_acls.
% Users that have admin access. Add line like one of the following after you
% will be successfully registered on server to get admin access:
{acl, admin, {user, "admin"}}.
% Blocked users:
%{acl, blocked, {user, "test"}}.
% Local users:
{acl, local, {user_regexp, ""}}.
% Another examples of ACLs:
%{acl, jabberorg, {server, "jabber.org"}}.
%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.
%{acl, test, {user_regexp, "^test"}}.
%{acl, test, {user_glob, "test*"}}.
% Everybody can create pubsub nodes
{access, pubsub_createnode, [{allow, all}]}.
% Only admins can use configuration interface:
{access, configure, [{allow, admin}]}.
% Every username can be registered via in-band registration:
% You could replace {allow, all} with {deny, all} to prevent user from using
% in-band registration
{access, register, [{allow, all}]}.
% After successful registration user will get message with following subject
% and body:
%{welcome_message,
% {"Welcome!",
% "Welcome to Instant Messaging server localhost. "
% "For information about ejabberd visit http://www.process-one.net/"}}.
% Replace them with 'none' if you don't want to send such message:
{welcome_message, none}.
% List of people who will get notifications about registered users
%{registration_watchers, ["admin1@srvis03",
% "admin2@srvis03"]}.
% Only admins can send announcement messages:
{access, announce, [{allow, admin}]}.
% Only non-blocked users can use c2s connections:
{access, c2s, [{deny, blocked},
{allow, all}]}.
% Set shaper with name "normal" to limit traffic speed to 1000B/s
{shaper, normal, {maxrate, 1000}}.
% Set shaper with name "fast" to limit traffic speed to 50000B/s
{shaper, fast, {maxrate, 50000}}.
% For all users except admins used "normal" shaper
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
% For all S2S connections used "fast" shaper
{access, s2s_shaper, [{fast, all}]}.
% Admins of this server are also admins of MUC service:
{access, muc_admin, [{allow, admin}]}.
% All users are allowed to use MUC service:
{access, muc, [{allow, all}]}.
% This rule allows access only for local users:
{access, local, [{allow, local}]}.
% Authentication method. If you want to use internal user base, then use
% this line:
{auth_method, internal}.
% For LDAP authentication use these lines instead of above one:
%{auth_method, ldap}.
%{ldap_servers, ["srvis03"]}. % List of LDAP servers
%{ldap_uidattr, "uid"}. % LDAP attribute that holds user ID
%{ldap_base, "dc=example,dc=com"}. % Search base of LDAP directory
%{ldap_rootdn, "dc=example,dc=com"}. % LDAP manager
%{ldap_password, "******"}. % Password to LDAP manager
% For authentication via external script use the following:
%{auth_method, external}.
%{extauth_program, "/path/to/authentication/script"}.
% For authentication via ODBC use the following:
%{auth_method, odbc}.
%{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}.
% Host name:
{hosts, ["srvis03"]}.
%% Define the maximum number of time a single user is allowed to connect:
{max_user_sessions, 10}.
%% Anonymous login support:
%% auth_method: anonymous
%% anonymous_protocol: sasl_anon|login_anon|both
%% allow_multiple_connections: true|false
%%{host_config, "public.example.org", [{auth_method, anonymous},
%% {allow_multiple_connections, false},
%% {anonymous_protocol, sasl_anon}]}.
%% To use both anonymous and internal authentication:
%%{host_config, "public.example.org", [{auth_method, [anonymous, internal]}]}.
% Default language for server messages
% TODO: Use installer selection
{language, "en"}.
% Listened ports:
{listen, [
{5222, ejabberd_c2s, [{access, c2s},
{max_stanza_size, 65536},
{shaper, c2s_shaper}]},
%% Use this line to enable SSL:
{5223, ejabberd_c2s, [{access, c2s}, {max_stanza_size, 65536}, tls, {certfile, "C:/Program Files (x86)/ejabberd-1.1.2/conf/server.pem"}]},
%%
%% Use those lines instead for TLS support:
%%{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
%% starttls, {certfile, "C:\Program Files (x86)\ejabberd-1.1.2/conf/server.pem"}]},
%% {5223, ejabberd_c2s, [{access, c2s},
%% tls, {certfile, "C:\Program Files (x86)\ejabberd-1.1.2/conf/server.pem"}]},
%% Remove this line if you want to prevent s2s connections:
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}, {max_stanza_size, 131072}]},
%% remove http_poll to remove support for http polling
%% remove web_admin to disable admin interface:
{5280, ejabberd_http, [http_poll, web_admin]}
%% This is an example on how to define an external service/transport:
%% {8888, ejabberd_service, [{access, all},
%% {hosts, ["icq.srvis03", "sms.srvis03"],
%% [{password, "secret"}]}]}
]}.
% If SRV lookup fails, then port 5269 is used to communicate with remote server
{outgoing_s2s_port, 5269}.
% Used modules:
{modules,
[
{mod_log_chat, [
{path, "C:/Program Files (x86)/ejabberd-1.1.2/logs/mod_log_chat/"},
{format, text}
]},
{mod_logxml, [
{stanza, [iq, message, presence, other]},
{direction, [internal, vhosts, externa]},
{orientation, [send, recv]},
{logdir, "C:/Program Files (x86)/ejabberd-1.1.2/logs/mod_logxml/"},
{rotate_days, 1},
{rotate_megs, 100},
{rotate_kpackets, no},
{timezone, local},
{check_rotate_kpackets, 1}
]},
{mod_shared_roster, []},
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_privacy, []},
{mod_adhoc, []},
{mod_configure, []}, % Depends on mod_adhoc
{mod_configure2, []},
{mod_disco, []},
{mod_stats, []},
{mod_vcard, []},
{mod_offline, []},
{mod_announce, [{access, announce}]}, % Depends on mod_adhoc
{mod_echo, [{host, "echo.srvis03"}]},
{mod_private, []},
{mod_irc, []},
% Default options for mod_muc:
% host: "conference." ++ ?MYNAME
% access: all
% access_create: all
% access_admin: none (only room creator has owner privileges)
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
% {mod_muc_log, []},
% {mod_shared_roster, []},
{mod_pubsub, [{access_createnode, pubsub_createnode}]},
{mod_time, []},
{mod_last, []},
%%{mod_xmlrpc,[{port, 4560},{timeout, 5000}]},
{mod_version, []}
]}.
% Local Variables:
% mode: erlang
% End:
Can anyone help me figure out what is preventing me from connecting from the internet?
Pontiac
You need a public official
You need a public official domain name which you use both for internal LAN users as well as WAN users. You can use e.g. a local DNS server to point local LAN users to the local IP.
--
sander
Works! Thank you so much, guys!
Tomder: thank you, the HOSTS file worked immediately :-)
Sander: as next task we surely will set up DNS exactly as you say, thanks for an advice.
I have just found out it can
I have just found out it can be done without editing HOSTS file:
as a login server I put "srvis03" and in Expert options (in Miranda) I can manually specify connection host: ***COMPANY IP***.
Works like a charm. :-)
what u can try is: set up on
what u can try is:
set up on router/firewall port forwarding to 5222 and in 'hosts' file on workstation put this:
srvis03 IP-on-router/firewall
cos your jabberd server like his name ... :)
and when u try to connect to is put not IP but srvis03
try
tomder