2

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

Я хочу, чтобы весь трафик на server1.example.com направлялся на 10.0.0.1, а весь трафик на server2.example.com - на 10.0.0.2

При необходимости я могу настроить третий сервер для запуска прокси или что-то еще. Я бы предпочел решение для Mac/Linux.

В большинстве других решений я видел только прокси-сервисы. Я хочу прокси весь трафик.

Как я могу маршрутизировать на основе имени хоста?

2 ответа2

3

К сожалению, в IP-маршрутизации нет имен хостов, только IP-адреса. Заголовок IP содержит только IP-адреса источника и назначения, а не имена хостов.

Таким образом, вы не можете проксировать весь трафик на основе имен просто потому, что внутри IP-пакетов нет доменных имен.

Некоторые протоколы, такие как HTTP 1.1, содержат внутри себя доменные имена. Таким образом, вы можете настроить обратный HTTP-прокси, просматривать HTTP-запросы и пересылать их на ваши внутренние серверы на основе доменных имен /URL-адресов внутри этих запросов.

Существует множество обратных HTTP-прокси. По сути, большинство HTTP-серверов, таких как Apache, можно настроить как обратный прокси-сервер. Вот пример такой конфигурации:

https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html

2

Как заявил @Andriy, используя только IP, это невозможно.

Когда ваш компьютер подключается к server1.example.com , он фактически разрешает это на IP-адрес, например: 123.123.123.123 .

Получив IP-адрес, он попытается подключиться к соответствующему порту на хосте 123.123.123.123 . На данный момент нет понятия « имя хоста » или DNS.


Если вы хотите добиться этого, то у вас есть два варианта:

  • Различайте услуги, используя разные общедоступные IP-адреса.
  • Различайте услуги, используя разные порты.

Вы уже заявили, что « не хотите, чтобы это было специфично для протокола », но (например), если бы вы использовали HTTP (S), это было бы возможно.

Это возможно только потому, что HTTP включает дополнительную информацию в свои заголовки, после подключения к хосту в 123.123.123.123 он говорит: « Пожалуйста, действуйте так, как будто я говорю с server1.example.com ».

Это просто подключиться к 123.123.123.123 и сказать « Пожалуйста, действуйте так, как будто я разговариваю с someotherhost.example.com » - даже если этот хост не публично объявлен. Выполнение этого запроса зависит от вашей конфигурации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .