LINUX.ORG.RU

Помогите разобраться с reverse proxy

 


0

1

На днях решил открыть свою медиатеку(plex media server) наружу и узнал, что мой редиска провайдер дает возможность открыть порт наружу только при покупке белого ip.

Платить за белый ip 300р в месяц меня душит жаба, т.к. за половину от этого можно у яндекса взять терабайт.

Нагуглил, что есть такая штука как reverse proxy. Также у меня есть VPS. Но вот понять как это всё настроить, у меня не получается даже статьям по картинками.

Объясните, пожалуйста, на пальцах, как для дебила, где и что я должен установить и настроить, чтобы у меня появился доступ наружу(в будущем хочу ещё NextCloud поднять тоже) без возможности проброса портов у провайдера. Что ставить на сервере, что ставить на VPS? Как потом это всё прописывать, чтобы работало 24\7, без ручного запуска чего бы то ни было. И при этом чтобы это не VPN был, чтобы интернеты работали как и раньше, напрямую, а через VPS только проксируемые порты шли.

★★★★★

Последнее исправление: Loki13 (всего исправлений: 1)

На vps ставишь vpn сервер по желанию, на сервер vpn клиент, поднимаешь соединение.
На vps делаешь dnat или revers proxy на ip сервера в vpn сети.
В routing на сервере настраиваешь что все новые соединения что пришли на адрес vpn должны уходить с vpn интерфейса (это в отдельной таблице роутинга делается, остальной трафик как и раньше пойдет).

Kolins ★★★★★
()

Для reverse proxy тебе на основном сервере всё равно нужен белый ip и открытый порт.

Я бы советовал менять провайдера. Большинство просят 150–180 рублей за это, 300 — это перебор.

Но да, можно решить с помощью VPN.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 1)
Ответ на: комментарий от CrX

Для reverse proxy тебе на основном сервере всё равно нужен белый ip и открытый порт.

У PlexMediaServer можно прописать «Внешний URL-адрес сервера», там коннект же идёт через учетную запись Plex'а.

Мне нужно только настроить этот «внешний серевер».

А для облака, я разве не смогу соединятся с адресом VPS, а чтобы он уже пробрасывал все запросы на 80й, например, порт, на мою машину, которая сама соединение с VPS будет устанавливать?

Есть такое обсуждение, причем решенное

https://forums.plex.tv/t/how-to-setup-nginx-as-a-reverse-proxy-for-plex/212702

Но я там ничего не понял

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от CrX

Я бы советовал менять провайдера

У меня частный сектор и провайдера всего 2. Магистраль телеком и недавно пришел Скайнет. И я совершенно не уверен, что у скайнета не будет таких же закидонов. Нормальные провайдеры переводят в режим моста свой терминал и не парят мозги, а тут жадность видимо.

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

Ну тебе выше сказали, как. VPN на своём VPN настраиваешь, и проблема решена.

Использовать его на своём домашнем компе для браузинга интернета при этом не обязательно, можно только для вот этого вот всего.

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

На vps делаешь dnat или revers proxy на ip сервера в vpn сети.

Вот это вот, для меня как китайский язык. У меня есть OpenVPN настроенный, я смогу с помощью него всё это провернуть? И почему на форуме Plex'а советуют nginx для этого?

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

и недавно пришел Скайнет

😱

И почему на форуме Plex’а советуют nginx для этого?

Потому что яблоки и апельсины) Тебе нужен И нжинкс И опенвпн. Решение, собственно, в первом ответе в теме :)

frunobulax ★★★
()
Последнее исправление: frunobulax (всего исправлений: 1)
Ответ на: комментарий от Loki13

У меня есть OpenVPN настроенный, я смогу с помощью него всё это провернуть?

Да.

И почему на форуме Plex’а советуют nginx для этого?

С его помощью делается reverse proxy.

Просто бэкэнд у тебя будет не по белому IP сделан, а по внутреннему IP в виртуальной сети.

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

1. Поставить nginx на VPS

2. OpenVPN с пробросом только одного порта надо сделать? Тут я напрягся. :)

3. В nginx прописать что бэкенд находится на ip компа за VPN.

4. Ходить(на nextcloud или прописать для plex) на адрес VPS.

Такой примерно алгоритм?

Кстати, можно ли OpenVPN подключение поднять 2 раза? Один раз постоянное для вот этого сервера и второе для всего поднимать по надобности?

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13
  1. Поставить nginx на VPS

ага. и openvpn. (или не ставить, а воспользоваться магией ssh туннелей)

  1. OpenVPN с пробросом только одного порта надо сделать? Тут я напрягся

Никаких «пробросов» портов. маршрут до конкретного хоста. (или ssh туннель, опять же)

  1. В nginx прописать что бэкенд находится на ip компа за VPN.

в nginx прописать виртуальные хосты. для плекса, некст-клоуна и прочего. для каждого - свой.

  1. Ходить(на nextcloud или прописать для plex) на адрес VPS.

в для каждого нужного сервиса - свой домен уровнем выше основного.

anonymous
()
Ответ на: комментарий от firkax

300р в месяц это конечно чуть выше чем обычно но вроде всё равно очень мало и явно меньше чем твои затраты времени на возню с впсами, впнами и прочим, и прочие неудобства.

Так VPS у меня и так есть, без него в наше время никуда. И я за него плачу всего 250р в месяц. А тут всего лишь за возможность порт пробросить(сам белый ip мне не нужен, я и с помощью dyndns справился бы).

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

Никаких «пробросов» портов. маршрут до конкретного хоста. (или ssh туннель, опять же)

Т.е. надо создать конфигурацию ovpn без маршрутов и прописать потом руками маршрут, да? Мне же не нужно, чтобы по этому каналу весь трафик пошел.

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

Какая разница 2 копейки платить или 3?

Так VPS у меня и так есть, без него в наше время никуда.

Вот сделаешь себе нормальный белый статический айпи, и поймёшь что никакие впсы больше не нужны, и возню с dyndns-ами забудешь наконец (тоже ими пользовался где-то до 2010 года).

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

Т.е. надо..

надо забыть как страшный сон про openvpn. Это худшее, что случалось в мире, не считая массового вымирания динозавров и популяризации пхп.

смотри, какая прелесть:

ssh -R [удаленный_адрес:]удаленный_порт:локальный_адрес:локальный_порт [пользователь@]сервер

Одной командой решает все твои проблемы.

anonymous
()
Ответ на: комментарий от firkax

Вот сделаешь себе нормальный белый статический айпи, и поймёшь что никакие впсы больше не нужны

И как мне белый айпи поможет ходить на порноторренты? А скачивать пакеты с сайта интела или кутей? Да что далеко ходить, у меня гента без этого не обновляется нормально, какой-то оверлей не может обновится. Поэтому и говорю что без VPS заграничного теперь никуда.

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Звучит и правда вкусно. И плясок никаких не надо в отличии от. А ssh может неделями 24\7 висеть тоннель без отвалов? Мне казалось что ssh это не про стабильные долгие соединения.

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

скачивать пакеты с сайта интела или кутей?

cloudflare warp. бесплатно, безлимитно, без всяких заграничных VPS. но через амнезию. что, впрочем, все равно проще и надежнее, чем сторублёвый VPS в нидерландах.

кстати, cloudflared решает и проблемы публикации вебсервисов «наружу» без внешного ip. без васянских «пробросов портов».

anonymous
()
Ответ на: комментарий от Loki13

Мне казалось что ssh это не про стабильные долгие соединения.

Мне казалось, что keepalive решает такие проблемы. Впрочем, спросить на форуме всегда проще, чем почитать документацию.

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

Что-то я похоже не так делаю

ssh -R 32400:localhost:32400 root@vps-ip -p 50222

Не работает. 32400 это порт на котором висит сервис локально.

htpp://localhost:32400 открывается, а http://vps-ip:32400 нет.

alexv@home ~ [1]> telnet vps-ip 32400

Trying vps-ip...

telnet: Unable to connect to remote host: Connection refused

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 2)
Ответ на: комментарий от anonymous

но через амнезию. что, впрочем, все равно проще и надежнее, чем сторублёвый VPS в нидерландах.

У меня и амнезия есть, но self-hosted. И VPS в финляндии, у меня тут пинг лучше и в финке ничего не блочат(итальянская аруба кучу всего блочила например), совсем ничего.

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

То есть с твоей стороны не желание платить 300р это не жадность, а со стороны провайдера жадность? :)

Жадность, что они вместо того чтобы перевести терминал в режим моста и я сам уже буду открывать что мне нужно на своем роутере, требуют подключать белый айпи, который мне в принципе и не нужен.

Ни на адсл, ни на мобильном модеме, такой дичи никогда не было. Что хотел то и пробрасывал.

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 3)
Ответ на: комментарий от anonymous
root@loki13gm:~# ufw status
Status: inactive
root@loki13gm:~# uname -a 
Linux loki13gm 5.15.0-116-generic #126-Ubuntu SMP Mon Jul 1 10:14:24 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
root@loki13gm:~# ufw allow 32400
Rules updated
Rules updated (v6)

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

Пробую прямо с VPS

root@loki13gm:~# curl vps-ip:32400
curl: (7) Failed to connect to vps-ip port 32400 after 0 ms: Connection refused
root@loki13gm:~# curl 127.0.0.1:32400   
<html><head><script>window.location = window.location.href.match(/(^.+\/)[^\/]*$/)[1]

Т.е. проблема что снаружи не принимает почему-то.

Хотя я даже вот так делал

iptables -t filter -A INPUT -p tcp --dport 32400 -j ACCEPT

Вот ещё:

root@loki13gm:~# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      936/docker-proxy    
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      588/ssserver        
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      586/ssserver        
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      269/systemd-resolve 
tcp        0      0 127.0.0.1:31531         0.0.0.0:*               LISTEN      598/containerd      
tcp        0      0 0.0.0.0:50222           0.0.0.0:*               LISTEN      612/sshd: /usr/sbin 
tcp        0      0 127.0.0.1:8118          0.0.0.0:*               LISTEN      597/privoxy         
tcp        0      0 vps-ip:1080       0.0.0.0:*               LISTEN      1237/danted         
tcp        0      0 127.0.0.1:32400         0.0.0.0:*               LISTEN      2782341/sshd: root@ 
tcp6       0      0 ::1:32400               :::*                    LISTEN      2782341/sshd: root@ 
tcp6       0      0 :::443                  :::*                    LISTEN      941/docker-proxy    
tcp6       0      0 ::1:8118                :::*                    LISTEN      597/privoxy         
tcp6       0      0 :::50222                :::*                    LISTEN      612/sshd: /usr/sbin 
tcp6       0      0 fe80::5054:ff:fe71:1080 :::*                    LISTEN      1237/danted        
Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 4)
Ответ на: комментарий от anonymous

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

Та не нужен мне белый ip. Я и с dyndns умею извращаться. Мне бы просто порт по динамическому айпи пробрасывать.

Или вы о том что у меня айпи вообще нет и я за натом? Об этом я не подумал, да.

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

сам белый ip мне не нужен, я и с помощью dyndns справился бы

Ты путаешь белый IP и статический, не? Обычно за дополнительные деньги продают статику, публичный IPv4 должен быть из коробки. Посмотри, какой адрес получает роутер.

anonymous
()
Ответ на: комментарий от Loki13

Или вы о том что у меня айпи вообще нет и я за натом?

Тебе бы прояснить этот момент для начала. Возьми адрес WAN своего роутера и скорми его ipcalc или любому другому подобному инструменту. Но надо смотреть именно на роутере, а не через внешние серверы.

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

хм?

Ну это я так понимаю пробросился порт когда я ssh запустил. Но он только для 127.0.0.1 виден, снаружи не виден.

root@loki13gm:~# iptables -t nat -I PREROUTING -p tcp -d vps-ip/24 --dport 32400 -j DNAT --to-destination 127.0.0.1:32400
root@loki13gm:~# curl vps-ip:32400                                                                                       
curl: (7) Failed to connect to vps-ip port 32400 after 0 ms: Connection refused

Пытаюсь шаманить, но не помогает

Loki13 ★★★★★
() автор топика
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от anonymous
alexv@home ~ [7]> ssh -R VPS-IP:32400:localhost:32400 root@VPS-IP -p 50222
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-116-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro
New release '24.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Tue Jan 21 11:05:33 2025 from 5.188.167.246
-bash: warning: setlocale: LC_ALL: cannot change locale (ru_RU.UTF-8)
root@loki13gm:~# curl VPS-IP:32400
curl: (7) Failed to connect to VPS-IP port 32400 after 0 ms: Connection refused
Loki13 ★★★★★
() автор топика
Ответ на: комментарий от Loki13

Да, ты за NAT. По стандарту это адреса 100.64.0.0/10, но может быть и что-то другое. Вообще это дичь, если не предоставляется IPv6. У моего провайдера v6 не пахнет, но с белыми v4 проблем нет (то есть это бесплатно).

anonymous
()
Ответ на: комментарий от Loki13

что они вместо того чтобы перевести терминал в режим моста и я сам уже буду открывать что мне нужно на своем роутере, требуют подключать белый айпи, который мне в принципе и не нужен.

Ты серьёзно это написал? Как тебе мост поможет открыть порт на сером айпи? 🤦

Ни на адсл,

Во времена популярности адсл белые айпи были практически у всех. На том адсл что у меня он и сейчас белый (безо всяких доп услуг), как у других не знаю.

ни на мобильном модеме

А вот это сомнительно, мобильные инеты почти всегда были за натом, может быть только совсем в древние времена там белый были.

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

Убери все свои предыдущие извра..хм.. эксперименты с iptables,

А как их убрать? Ребутом?

со своего же @home попробуй curl

Я и со своего пробовал и с VPS. С VPS на 127.0.0.1 работает, открывает ресурс с домашнего компа, а с внешнего ip не открывает ни оттуда ни оттуда.

посмотри tcpdump и на @home и на @loki13gm. посмотри логи sshd.

Я так понимаю, что оно сразу отклоняет. Непонятно почему.

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

может быть только совсем в древние времена там белый были.

Пару лет назад. На мегафоне, на модеме. Он был конечно динамический и менялся каждый реконнект, но белый.

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

Странно, за последние 5 лет пользования мегафоновским мобильным инетом белых айпи ни разу не видел, всегда выдаются 10.х.х.х серые динамические.

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

С VPS на 127.0.0.1

тооооненько намекну, почему оно работает только со 127.0.0.1.

потому что sshd слушает твой порт только на 127.0.0.1

легонечко подскажу, как это поправить

запусти ssh -R с явным указанием, где слушать

ssh -R vps_ip:удаленный_порт:локальный_адрес:локальный_порт [пользователь@]сервер

обращу внимание, что файерволл с непонятными «васянствами» про dnat vps_ip/24 (OMG!!11111 /24 КАРЛ 1111 11!!! /24), нужно бы привести к нормальному виду.

anonymous
()
Ответ на: комментарий от firkax

Ты серьёзно это написал? Как тебе мост поможет открыть порт на сером айпи? 🤦

Дядя, я не настоящий сварщик. Я одминю только свой локалхост и то постольку поскольку, я даже витую пару обжимать не умею. А все эти форвардинги и маскарадинги для меня что китайский язык, могу только из интернетов готовые команды копипастить.

Не, когда мне нужно по работе разобраться, я конечно разберусь со всем за недельку, я так как-то bash портянки с использованием socat писал для удаленной отладки в хитром контейнере. Но из памяти всё вылетает через пару месяцев неиспользования этих знаний.

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

легонечко подскажу, как это поправить

запусти ssh -R с явным указанием, где слушать

ssh -R vps_ip:удаленный_порт:локальный_адрес:локальный_порт [пользователь@]сервер

Я так и сделал же последний раз. Все равно connection refused. Вот тут:

alexv@home ~ [7]> ssh -R VPS-IP:32400:localhost:32400 root@VPS-IP -p 50222
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-116-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro
New release '24.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Tue Jan 21 11:05:33 2025 from 5.188.167.246
-bash: warning: setlocale: LC_ALL: cannot change locale (ru_RU.UTF-8)
root@loki13gm:~# curl VPS-IP:32400
curl: (7) Failed to connect to VPS-IP port 32400 after 0 ms: Connection refused
Loki13 ★★★★★
() автор топика