Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Реверсивный проброс портов не работает  (Прочитано 1625 раз)

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

Оффлайн gigstox

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Добрый день!

Есть домашний сервер (Proxmox -> ubuntu 24)  за роутером, без белого IP и без возможности его подключить.
Приобретен недорогой VPS с белым IP (Ubuntu 24)
На домашнем сервере запущен Apache2 (тестовая страница открывается)

Логинюсь в домашний сервер и выполняю команду

ssh -R 81:localhost:80 root@IP_VPS

после успешного выполнения ожидаю что в браузере http://IP_VPS  откроется тестовая страница Apache2, но ничего не происходит





Оффлайн F12

  • Администратор
  • Старожил
  • *
  • Сообщений: 5631
    • Просмотр профиля
Re: Реверсивный проброс портов не работает
« Ответ #1 : 12 Января 2025, 15:50:15 »
ssh -R 81:localhost:80 root@IP_VPS
- а что, по-твоему, ты этой командой сделал?

Пользователь добавил сообщение 12 Января 2025, 15:58:03:
Цитата:  man ssh
     -R [bind_address:]port:host:hostport
     -R [bind_address:]port:local_socket
     -R remote_socket:host:hostport
     -R remote_socket:local_socket
     -R [bind_address:]port
             Specifies that connections to the given TCP port or Unix socket
             on the remote (server) host are to be forwarded to the local
             side.

             This works by allocating a socket to listen to either a TCP port
             or to a Unix socket on the remote side.  Whenever a connection is
             made to this port or Unix socket, the connection is forwarded
             over the secure channel, and a connection is made from the local
             machine to either an explicit destination specified by host port
             hostport, or local_socket, or, if no explicit destination was
             specified, ssh will act as a SOCKS 4/5 proxy and forward connec‐
             tions to the destinations requested by the remote SOCKS client.

             Port forwardings can also be specified in the configuration file.
             Privileged ports can be forwarded only when logging in as root on
             the remote machine.  IPv6 addresses can be specified by enclosing
             the address in square brackets.

             By default, TCP listening sockets on the server will be bound to
             the loopback interface only.  This may be overridden by specify‐
             ing a bind_address.  An empty bind_address, or the address ‘*’,
             indicates that the remote socket should listen on all interfaces.
             Specifying a remote bind_address will only succeed if the
             server's GatewayPorts option is enabled (see sshd_config(5)).

             If the port argument is ‘0’, the listen port will be dynamically
             allocated on the server and reported to the client at run time.
             When used together with -O forward the allocated port will be
             printed to the standard output.
« Последнее редактирование: 12 Января 2025, 15:58:03 от F12 »

Оффлайн gigstox

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Реверсивный проброс портов не работает
« Ответ #2 : 12 Января 2025, 16:40:06 »
Брал пример отсюда
https://firstvds.ru/technology/vneshniy-ip-s-pomoschyu-vds-putyom-sozdaniya-ssh-tunnelya

хочу получить внешний IP для своего локального компьютера

Оффлайн valrust

  • Активист
  • *
  • Сообщений: 372
    • Просмотр профиля
Re: Реверсивный проброс портов не работает
« Ответ #3 : 12 Января 2025, 18:42:34 »
после успешного выполнения ожидаю что в браузере http://IP_VPS  откроется тестовая страница Apache2

Что бы так работало, нужно на VPS в настройках сервера SSH включить опцию GatewayPorts, которая разрешает проброс порта с разных интерфейсов, по умолчанию можно пробрасывать только с интерфейса loopback.

Для этого в конфигурационный файл /etc/ssh/sshd_config на VPS нужно добавить опцию:
GatewayPorts yes
И после этого перезапустить SSH сервер на VPS:
sudo service ssh restart
Подключаться к VPS с домашнего сервера нужно командой:
ssh -R '*:80:localhost:80' root@IP_VPS
Символ * в команде подключения обозначает, что на VPS будут прослушиваться все интерфейсы, в том числе и интерфейс с белым IP адресом.
« Последнее редактирование: 12 Января 2025, 23:14:02 от valrust »

Оффлайн gigstox

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Реверсивный проброс портов не работает
« Ответ #4 : 12 Января 2025, 19:46:43 »
GatewayPorts yes

Премного благодарен!  все заработало как и хотелось.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28510
    • Просмотр профиля
Re: Реверсивный проброс портов не работает
« Ответ #5 : 13 Января 2025, 13:34:42 »
А вот так делать не стоит. Лучше на VPS настроить HTTP сервер и через него проксировать на localhost.

На примере nginx:

server {
    server_name www.example.org;

    listen 80;

    error_log "/var/log/nginx/error.www.example.org.log" warn;
    access_log "/var/log/nginx/access.proxy64.log" proxy_combined;

    location / {
        proxy_pass http://localhost:81/;

        include extras/proxy_pass; # Custom proxy-pass variables, do it yourself.

        proxy_read_timeout 20s;
    }
}
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.016 секунд. Запросов: 21.