Как сделать локальный веб-сервер видимым из Интернета * без * настройки переадресации портов на маршрутизаторе?

12

Я разрабатываю веб-сайты на своем (высококлассном) ноутбуке и работаю в разных местах.

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

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

Я надеялся, что платные услуги обратного прокси (взимая ежемесячную плату за учетную запись) обеспечат проприетарное клиент-серверное программное обеспечение обратного прокси на уровне сокетов, которое можно использовать для этой цели. Я не могу найти один. Я уже использую TeamViewer и LogMeIn, предоставляя аналогичные проприетарные сервисы. Фактически, я попытался использовать LogMeIn Hamachi VPN, чтобы сделать это возможным - заставив мой рабочий стол (уже видимый для Интернета) пересылать IP-трафик, запрашивающий порт 80, через VPN на мой ноутбук. Тем не менее, кажется, невозможно настроить Hamachi / Windows таким образом (но я могу ошибаться).

Я надеюсь, что есть простой и надежный способ сделать это.

Дан Ниссенбаум
источник
На самом деле вы можете настроить базовый веб-сервер с помощью веб-браузера Opera (Opera unite), но это решение только в случае приложения HTML + JavaScript, которое, я считаю, не соответствует вашим потребностям.
jakub.g
В настоящее время у меня есть работающий веб-сервер - Apache (настроенный как часть установки XAMPP для Windows). Этот веб-сервер работает хорошо, и при работе на моем рабочем столе за постоянным маршрутизатором не возникает проблем с отображением из Интернета, поскольку я настроил переадресацию портов на своем маршрутизаторе. Я заинтересован в том, чтобы найти способ сделать мой локальный веб-сервер публично видимым из Интернета, когда у меня нет доступа к маршрутизатору для настройки переадресации портов.
Дан Ниссенбаум

Ответы:

8

Если у вас есть сервер, к которому вы можете подключиться по SSH, и этот сервер позволяет вам прослушивать на соответствующих портах общедоступный IP-адрес (а) (который, если вы им управляете, будет - возможно, даже настольным компьютером, который вы опишите, если вы устанавливаете SSHd через cygwin или аналогичный) вы можете использовать опцию туннелирования SSH для перенаправления трафика на ваш локальный сервер.

Что-то вроде: ssh root@your.server.tld -g -R 11.22.33.44:80:127.0.0.1:80будет, после подключения и аутентификации, сделать порт 80 на 11.22.33.44 (при условии, что это публичный адрес сервера) будет принимать соединения, которые затем перенаправляются на ваш локальный порт 80. Вам необходимо включить опцию GatewayPorts на сервере чтобы прослушивать нелокальный адрес таким образом, и для входа на порты с номерами ниже 1024 необходимо войти в систему как root, и если там уже есть служба, прослушивающая порт 80, вам, очевидно, нужно в любом случае выбрать что-то другое. -CРекомендуется добавить опцию включения сжатия потоков, проходящих через SSH, особенно если вы подключаете ноутбук через медленную сеть (возможно, застряли в глуши, когда доступно только мобильное соединение GPRS).

Чтобы использовать ssh в Windows, у вас есть несколько вариантов. Вы можете установить порт cygwin [тогда команда, которую я дал выше, должна JustWork (tm)] или использовать другой клиент. PuTTY - очень популярная опция, которая поддерживает туннелирование удаленных портов.

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

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

Наряду с SSH вы также можете рассмотреть инструмент VPN, такой как OpenVPN, и использовать простые правила iptables на сервере для переадресации соединений на ваш компьютер при подключении. Это может быть более эффективным и менее сложным после настройки, но может быть немного сложнее в настройке, если вы не знакомы с ним и маршрутизацией в целом уже. Опять же, дешевый VPS или ваш собственный офисный / домашний сервер подойдут в качестве серверной части VPN.

Дэвид Спиллетт
источник
+1: я как раз собирался предложить ssh-туннелирование, но вы опередили меня и объяснили это более четко, чем я хотел бы, для загрузки.
Дейв Шерохман
Отличный ответ, спасибо. У меня уже есть WinSSHD (от Bitvise - платная программа), поэтому я должен иметь возможность использовать это. Я могу попытаться использовать iptables для маршрутизации данных (первоначально, подумав об этом, я запутался, потому что знал, что данные поступают на компьютер в локальной сети, используемой совместно с маршрутизатором, но не в локальной сети, используемой совместно с VPN. - не то чтобы это меня смущало). Любой, кто хотел бы опубликовать пример необходимой записи iptable, которая работает с маршрутизатором и передает данные в сеть VPN, будет очень приветствоваться и ценится!
Дан Ниссенбаум
1

Туннелирование IPV6 на ноутбуке в сочетании с прокси ipv4 to 6 - gogo6 предоставляет хороший бесплатный сервис с клиентом для автоматического обновления в рамках freenet6 -. Объедините это с записью AAAA и прокси-сервером, который переводится с ipv6 на 4 ( sixxs запускает публичный), или для более элегантного решения - ваш собственный прокси-сервер ( может работать polipo ), выполняющий трансляцию по тому же адресу A

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

Подмастерье Компьютерщик
источник