LINUX.ORG.RU
ФорумAdmin

Настройка внешнего доступа Prosody

 ,


1

2

Добрый вечер! В локальной сети есть сервер Prosody. Серверу присвоено локальное доменное имя jabber.local.

Каким образом можно организовать внешний доступ в/из локалки к серверу. Т.е. чтобы можно было писать, находясь не в локалке.

Белого айпишника нет. Есть vps и есть доменное имя. Также есть туннель от сервера prosody до vps.

Подозреваю, что надо использовать что-то типа nginx. Попробовал, но что-то не вышел каменный цветок)))

Ответ на: комментарий от einhander

Если не затруднит, можно поподробнее)

доменное имя приписываю к айпишнику vps сервера. теперь мне нужно пробросить все используемые порты prosody на локальный сервер? Что-то типа этого sudo iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 5222 -j DNAT –to-destination 10.10.10.10:5222

Caldin-Maldin
() автор топика

Либо уже описанное выше пробрасывание порта, но в таком случае на клиентах надо будет помимо JID'а и пароля все равно явно указывать хост, куда подключаться (т.е., писать там IP VPS'ки).

Либо таки организовать общую сеть с Prosody - VPN на базе VPS'ки.

YAR ★★★★★
()
Ответ на: комментарий от YAR

Насчёт общей сети, может не так выразился, но подключение между ними организовано через OpenConnect, т.е. сервер VPS являентся сервером ОС, а сервер Prosody - клиентом.

Caldin-Maldin
() автор топика
Ответ на: комментарий от YAR

Пока просто была сеть общая - доступ извне не работал. Сейчас сделал проброс портов 5222,5269,5280,5281. Могу извне подключится клиентом прописав в настройках JID и пароль, а также внешний домен, который на VPS.

Т.е. в конфиге prosody у меня везде указан jabber.local, upload.jabber.local и т.д., а на сервер vps у меня прописан домен jabber.mydomain.com, upload.jabber.mydomain.com и т.д.

С сообщениями проблем нет, доходят, а вот с фотками и файлами засада. При отправке в клиенте ошибка - failed to connect to upload.jabber.local/192.168.1.8 (port 5281) from /10.158.217.90 (port 51658) after 10000ms

Caldin-Maldin
() автор топика
Ответ на: комментарий от Caldin-Maldin

доступ извне не работал.

Имеется в виду «вообще извне»? Т.е., из Интернет, без использования подключения к VPN на VPS'ке? Тогда да, нужен проброс.

а на сервер vps у меня прописан домен jabber.mydomain.com

Если в принципе есть какое-то доменное имя, почему не использовать его на Просоди изначально, а для подключений внутри локальной сети просто резолвить его местным DNS'ом на внутренний адрес?

При отправке в клиенте ошибка - failed to connect to upload.jabber.local

Это при подключении с внешней сети? В общем-то да, для HTTP Upload есть put_url и get_url (пишу по аналогии с ejabberd, у Просоди что-то аналогичное должно быть) - т.е., адрес на который мы (клиент) отправляем файл и адрес, с которого мы потом получаем контент (они не обязательно одинаковые). Соответственно, если Просоди отвечает за jabber.local, то он этот домен по-умолчанию подставляет и в качестве домена получения / отдачи контента. Соответственно, клиент, подключившийся «снаружи» (если мое предположение в первом пункте верно), ничего не знает ни про какой jabber.local. Т.е., либо переопределить настройку, либо все же сделать уже нормально, без local-домена.

YAR ★★★★★
()
Ответ на: комментарий от YAR

По первому абзацу. Да именно так. При подключении клиента (телефона) к vps всё работает, хотелось бы вообще извне)

Домен есть.

Третье. Пытался прописать в конфиге Prosody в раздел про загрузку Component "upload.jabber.local" "http_file_share" внешний домен, но тогда фотки вообще пытаются отправиться и ошибки не появляется. Просто фотка висит не отправленная.

Если не затруднит, подскажите как сделать нормально?))

Caldin-Maldin
() автор топика
Ответ на: комментарий от Caldin-Maldin

Третье. Пытался прописать в конфиге Prosody в раздел про загрузку Component «upload.jabber.local» «http_file_share» внешний домен, но тогда фотки вообще пытаются отправиться и ошибки не появляется. Просто фотка висит не отправленная.

Смотря как прописывал. В целом, у модуля есть параметр http_host и http_external_url - то, через что он будет отдавать контент. Отдавать может как сам модуль, так и, например, отдельный веб-сервер, который просто смотрит в тот же каталог, куда и модуль. Это отдача.

Для того, чтобы положить файл в нужный каталог - у тебя любой клиент (как локальный, так и внешний) должен как-то добраться до твоего сервера и до его порта, на котором висит http_file_share.

------------
Ладно, так или иначе:

Если не затруднит, подскажите как сделать нормально?))

Если ты все равно выпускаешь сервер в мир - избавься от внутреннего домена. Попытки прикрутить к тому, что сконфигурировано для использования чисто в локальной сети, доступ еще и снаружи и порождает проблемы. Вместо того, чтобы пытаться это все разгрести - надо просто сменить подход.

Какая в целом необходимость (была или есть) использования local-зоны?

YAR ★★★★★
()
Ответ на: комментарий от YAR

Какая в целом необходимость (была или есть) использования local-зоны?

Абсолютно никакой, просто сначала был установлен сервер prosody на vps. Всё настроил, всё работает. Потом решил сделать его локально,но с доступом извне.

Caldin-Maldin
() автор топика
Ответ на: комментарий от Caldin-Maldin

В таком случае продумай миграцию исходя из того, как много сейчас пользователей и как удобно сменить настройки на их клиентах. Ну и поразглядывай https://jabberworld.info/Свой_сервер:_подробное_руководство_по_установке_Prosody

Дальше - делаешь сервис, который изначально заточен на использование из Интернет. Если по какой-то причине хочется сделать доступ без наличия Интернета при подключении клиента из локальной сети - можешь просто решить это на уровне DNS.

YAR ★★★★★
()
Ответ на: комментарий от YAR

.как удобно сменить настройки на их клиентах

Это вообще не проблема, делаю для семьи.

Ну и поразглядывай https://jabberworld.info/Свой_сервер:_подробное_руководство_по_установке_Prosody

Смотрел на него уже много раз)) Но там говорится про настройку облачного сервера или с сервера с белым ip. Облачный я уже настраивал, но хочу, чтобы сервер физически находился дома.

сервис, который изначально заточен на использование из Интернет

Вот я и хочу так сделать, но не понимаю, как их связать. Как сделать, чтобы локальный сервак смотрел наружу через vps…

Caldin-Maldin
() автор топика
Ответ на: комментарий от Caldin-Maldin

Но там говорится про настройку облачного сервера или с сервера с белым ip.

Не обязательно. Сервер в общем случае ничего не знает про то, на чем он работает (ок, для некоторых настроек может потребоваться указать внешний адрес). Он просто слушает ряд портов на определенном интерфейсе. Далее ты волен прокидывать порты с одного интерфейса на другой и выставлять свой сервис в другие сети.

Пример: у меня на (через) jabberworld.info доступны на деле 3 сервера. Один - тот, что крутится на самой VPS и 2 - дома (как раз так, как ты хочешь). Дома крутится виртуалка, в которой идет подключение на VPS через VPN, а на VPS идет проброс портов с внешнего интерфейса на VPN-сеть.
https://rain.linuxoid.in/2024/11/19/ets-pts-пара-тестовых-jabberов-с-хостинго...

YAR ★★★★★
()
Ответ на: комментарий от YAR

Дома крутится виртуалка, в которой идет подключение на VPS через VPN, а на VPS идет проброс портов с внешнего интерфейса на VPN-сеть.

Вот так у меня и было сделано, но фотки не грузились(((

дома (как раз так, как ты хочешь)

если есть возможность и не трудно, скинь конфиг джаббера и что делалось на vps.

Заранее благодарю…)))

Caldin-Maldin
() автор топика
Ответ на: комментарий от Caldin-Maldin

Prosody:

https://upload.jabberworld.info/u/ec27dcda43c1bdb422cd46afa492a43811cee88a/a0...

eth0: 192.168.220.205
ppp0: 192.168.223.205

Апач: https://linuxoid.in/isida-paste/294f7f967.txt

Как уже писал в блоге, это тест-сервер и отдельные моменты хотелось сделать похожими на «боевой» сервер (плюс задействовать существующие сервисы); в твоем случае наверняка можно оптимизировать и убрать лишнее.

VPS: https://linuxoid.in/isida-paste/294f7ffae.txt

Читать, соответственно, с оглядкой на тот пост в блоге.

Update: а, веб-сервер на VPS'ке просто проксирует все для pts.jabberworld.info и субдоменов на 192.168.223.205
Для аплоада отдельно добавлено

RequestHeader set Host «upload.pts.jabberworld.info»
ProxyPass /pts https://192.168.223.205/u

Но, повторюсь, в твоем случае это все не надо - просто добавил, чтобы был понятен весь механизм.

YAR ★★★★★
()
Последнее исправление: YAR (всего исправлений: 2)