Як зробити локальний веб-сервер видимим з Інтернету * без * налаштування переадресації портів на маршрутизаторі?


12

Я розробляю веб-сайти на своєму (високого класу) ноутбуці, і працюю з різних фізичних місць.

Я хотів би врятувати клопоту про постійну синхронізацію із зовнішнім видимим веб-сервером, щоб клієнти могли перевірити хід роботи сайту (або для відповідних цілей). Тому я намагаюся знайти спосіб, щоб мій ноутбук міг автоматично публічно видно з Інтернету, з будь-якого місця, навіть коли у мене немає доступу до маршрутизатора, щоб налаштувати переадресацію портів (наприклад, з кав'ярень або з інших громадських бездротових з'єднань).

Я вже використовую 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 на сервері таким чином слухати на адресу, яка не є локальним хостом, і потрібно увійти як root для прослуховування портів нижче 1024, а якщо вже існує сервіс, який прослуховує порт 80, то, очевидно, все одно потрібно вибрати щось інше. Додавання -Cопції для ввімкнення стиснення потоків, що проходять через SSH, рекомендується, особливо якщо ви підключаєте ноутбук через повільну мережу (можливо, застряг посеред нізвідки, доступний лише мобільний GPRS-з'єднання).

Для використання ssh у Windows у вас є кілька варіантів. Ви можете встановити порт cygwin [тоді команда, яку я дав вище, повинна JustWork (tm)] або використовувати інший клієнт. PuTTY - дуже популярний варіант, і він підтримує віддалене тунелювання портів.

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

Замість того, щоб використовувати для цього домашній або офісний сервер, який може уповільнити ситуацію далі, якщо у вас хороший швидкий зв’язок в обох напрямках там, ви можете отримати кращі результати, взявши напрокат невеликий VPS Linux десь (бажано в одній країні) лише для цієї мети. Вам потрібні лише найменші машини, поки є достатня пропускна здатність, тому це коштуватиме лише пару-кілька доларів на місяць.

Крім SSH, ви також можете розглянути інструмент VPN, такий як OpenVPN, і використовувати прості правила iptables на сервері для переадресації з'єднань до вашої машини при підключенні. Це може бути більш ефективним і менш клопоту після налаштування, але це може бути трохи зайвих клопотів, щоб налаштувати, якщо ви не знайомі з ним і маршрутизацією взагалі вже. Знову дешевий VPS або ваш власний офісний / домашній сервер зробив би як серверний кінець VPN.


+1: Я збирався запропонувати ssh-тунелювання, але ти побив мене та пояснив це чіткіше, ніж я, для завантаження.
Дейв Шерохман

Відмінна відповідь, дякую. У мене вже є WinSSHD (від Bitvise - платна програма), тому я повинен мати можливість цим користуватися. Я можу спробувати використовувати iptables для маршрутизації даних (спочатку, думаючи про це, я заплутався, бо знав, що дані надходять на комп’ютер у локальній мережі, спільно з маршрутизатором, але не в локальній мережі, спільною з VPN - не те, що це повинно мене бентежити). Будь-хто, хто хотів би опублікувати приклад необхідного iptable запису, який працює з маршрутизатором та передає дані в мережу VPN, був би вдячний та вдячний!
Дан Ніссенбаум,

1

Тунелювання IPV6 на ноутбуці в поєднанні з ipv4 до 6 проксі - gogo6 має приємний, безкоштовний сервіс з клієнтом для автоматичного оновлення в рамках freenet6 -. Поєднайте це із записом AAAA і проксі-сервером, який перекладається з ipv6 на 4 ( шість разів працює на загальнодоступному), або для більш елегантного рішення - власний проксі-сервер ( поліпо, можливо, працює), який здійснює переклад за тією ж адресою A

Якщо правильно встановити, це повинно бути переважно прозорим, за винятком невеликої затримки від того, щоб відхилятися стільки разів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.