Назад | Перейти на главную страницу

Доступ к веб-серверу за маршрутизатором, когда переадресация портов невозможна. Как localtunnel, но для нескольких сайтов

Ситуация Я запускаю веб-сервер (CentOS на VMware, несколько виртуальных хостов) на машине разработки, и я хотел бы предоставить клиентам доступ для просмотра некоторых сайтов без необходимости загружать их во внешнюю учетную запись хостинга.

Эта проблема У меня нет доступа к маршрутизатору, поэтому я не могу настроить переадресацию портов. Однако у меня есть учетная запись хостинга (с доступом по ssh) и даже VPS.

Вопрос Есть ли что-то, что я мог бы настроить в своей учетной записи внешнего хостинга или VPS, чтобы обрабатывать запросы веб-страниц, каким-то образом извлекая данные с моего локального сервера (за маршрутизатором) и передавая их конечному пользователю? Я понимаю, что это немного запутано, но производительность особого значения не имеет.

Спасибо!!!

Вы можете сделать что-то подобное на своем компьютере разработчика:

ssh vps-hostname -R 8080:localhost:80

Это создаст зашифрованный туннель от порта 8080 на vps к порту 80 на локальном компьютере.

Я думаю, вам также нужно настроить ssh для использования пакетов keep-alive (например, с ClientAliveInterval вариант на sshd_config на VPS), поскольку слишком долгое простаивающее соединение будет прервано вашим маршрутизатором.

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

1) ваш ящик внутри частной сети может подключаться к вашему облачному серверу / vps (но не наоборот), поэтому используйте cron, который заполняет корень документа для apache / nginx. например, вы можете использовать pki и rsync каждый час.

2) настройте openvpn на внутреннем ящике и инициируйте оттуда туннель на сайты ваших клиентов (не рекомендуется ... это бэкдор в вашу компанию)

3) подружитесь с администраторами брандмауэра и попросите их перенаправить порт для вас (хотя вам, скорее всего, придется загружать на веб-сервер в демилитаризованной зоне, так что вы также можете сделать № 1 и загрузить в облако)

Уже есть хорошие идеи, но вот решение, которое сделает вашу VMWare доступной, как если бы она была на вашем vps:

  1. Установить openvpn сервер на вашем vps. Есть много руководств. Предлагаю выбрать мостовой режим (с интерфейсом тапа). Выберите диапазон IP, например 10.1.2.1-254 (10.1.2.0/24). После того, как вы сгенерировали свой CA и т. Д., Сгенерируйте клиентский ключ с именем «vmware» без парольной фразы и поместите в каталог / etcopenvpn / cdd файл с именем «vmware» со следующим содержимым:

    --ifconfig-push 10.1.2.3 255.255.255.0

важные строки в вашем server.conf (то есть: которые вы должны изменить из конфигурации по умолчанию)

dev tap0
server-bridge 10.1.2.1 255.255.255.0 10.1.2.100 10.1.2.110
client-config-dir /etc/openvpn/ccd

Убедитесь, что порт udp 1194 открыт для общего доступа (или, по крайней мере, с общедоступного IP-адреса вашей машины vmware).

  • На вашем vmware установите также openvpn, но в каталоге / etc / openvpn / вы поместите:
  • ваш закрытый ключ + сертификат + сертификат CA
  • файл с именем "vps.conf" с конфигурацией клиента

важные строки:

remote <public ip address your vps> 1194
ca, cert, key

Если вы включите службу openvpn (checkconfig openvpn on), клиент запустится автоматически при загрузке, установив туннель между вашим vpn и vps.

  1. Теперь в конфигурации apache вашего vps создайте виртуальный хост (желательно не по умолчанию) с чем-то вроде:

Имя сервера MyVmware.vm.ware.com

RewriteEngine при RewriteRule (. *) http://10.1.2.3/$1 [P, L]

Вот, пожалуйста..

Между прочим, вы только что сделали свой сервер разработки общедоступным. Предлагаю ограничить доступ хотя бы в конфигурации apache ..