У меня довольно стандартная домашняя сеть с модемом от моего интернет-провайдера, который подключен к маршрутизатору, который затем обеспечивает NAT примерно для 3 ПК и ноутбуков. У моего интернет-провайдера есть возможность получить один общедоступный IP-адрес.
Теперь я хотел бы добавить к этой настройке веб-сервер. Меня беспокоит, как веб-сервер будет играть вместе с остальной частью сети.
Скажем, мой интернет-провайдер дает мне общедоступный IP-адрес 1.2.3.4. В моем домашнем роутере я считать что мне нужно настроить правило, согласно которому запросы к 1.2.3.4:80 должны направляться на внутренний IP-адрес моего веб-сервера, скажем 192.168.1.1.
Однако, если я сижу на своем домашнем ПК и пытаюсь загрузить google.com, Google, вероятно, увидит IP моего ПК (который может быть 192.168.1.2) как 1.2.3.4 (мой общедоступный IP-адрес) и отправит ответ на этот IP-адрес. Когда IP-пакеты достигают моего маршрутизатора, он будет рассматривать его как пакет 1.2.3.4:80, и я беспокоюсь, что он будет перенаправлен на мой домашний веб-сервер, что, очевидно, помешает правильной работе моих компьютеров.
Я уверен, что в приведенных выше рассуждениях есть какая-то дыра и что за одним общедоступным IP-адресом можно иметь как обычные рабочие столы, так и веб-сервер. Поэтому, если бы кто-нибудь мог объяснить, в чем я ошибаюсь и как это на самом деле работает, я был бы очень признателен.
Вы почти у цели. За исключением того, что ответы, поступающие от Google, не будут восприниматься как пакет на 1.2.3.4:80. Они увидят его как 1.2.3.4:XXXXX, где XXXXX - это случайный номер порта из непривилегированного диапазона.
Кроме того, маршрутизатор будет вести список подключений в своей таблице маршрутизации и правильно направлять ответный пакет на ваш настольный компьютер 192.168.1.2 вместо вашего домашнего сервера.
То, что вы хотите сделать, - это довольно простая и нормальная настройка.
Помните, что часто для домашних интернет-провайдеров ваша Политика допустимого использования или Условия использования запрещают использование серверов. Мой интернет-провайдер фактически блокирует порты 25 и 80 (и некоторые другие), что делает невозможным запуск сервера без обозначения порта на нем.
Вопрос, который вы не задавали, звучит так: «Следует ли мне размещать веб-сервер в моей домашней сети», и ответ почти всегда - «нет». Для этого существует технология, но если это не очень маленький сайт для хобби (или просто для обучения), вам гораздо лучше платить 5-10 долларов в месяц и получать намного больше пропускной способности и избыточности от компания, которая настроена сделать это.
Так может, да? Вы должны? почти никогда.