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

Настройка нескольких серверов для совместного использования одного статического IP-адреса с использованием поддоменов

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

Прямо сейчас у меня есть 3 сервера под управлением Ubuntu 11.10, сидящих за коммутатором. Я хотел бы получить к ним доступ как server1.example.com, server2.example.com и server3.example.com. Когда все 3 были настроены с одним и тем же статическим IP-адресом, только одна машина имела подключение к Интернету. Поэтому я потратил много времени на эксперименты в / etc / network / interfaces, что, вероятно, было большой ошибкой, прежде чем я попытался настроить iptables, следуя это руководство.

Я не могу понять, с чего начать и даже что гуглить. Возможно, мне нужна другая конфигурация оборудования, в настоящее время на каждой машине есть один ник, хотя при необходимости я могу найти сетевые карты. У меня кроме свитча еще и старый роутер wrt54g.

РЕДАКТИРОВАТЬ

Я бы предпочел доступ к ним по протоколу HTTP, но SSH тоже важен.

Вы не будет иметь возможность иметь все 3 машины с одним IP-адресом. Не то, как работает сеть. Проверять, выписываться этот ответ о том, как работает сетевая маршрутизация для объяснения почему.

Что вы могли сделать: Настройте обратный прокси-сервер в качестве шлюза, а затем попросите его перенаправить адрес на основе заголовка запроса узла HTTP. Я бы рекомендовал использовать Фунт поскольку он легкий и его единственная цель - быть обратным HTTP-прокси. Вы могли бы использовать apache или nginx для достижения той же цели, если вы более знакомы с ними.

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

Пример того, как это сделать в фунтах (1.2.3.4 ваш статический IP, все server#.example.com записи A для этого статического IP-адреса):

ListenHTTP
        Address 1.2.3.4
        Port    80
        Service
            HeadRequire "Host: .*server1.example.com.*"

            BackEnd
                Address 192.168.3.11
                Port    80
            End
        End
        Service
            HeadRequire "Host: .*server2.example.com.*"

            BackEnd
                Address 192.168.3.12
                Port    80
            End
        End
        Service
            HeadRequire "Host: .*server3.example.com.*"

            BackEnd
                Address 192.168.3.13
                Port    80
            End
        End
 End

Ответ на комментарий

Если вы хотите сохранить обратный прокси-сервер на одном из имеющихся серверов, вам необходимо:

  1. Выберите один из серверов в качестве обратного прокси.
  2. Пусть ваш маршрутизатор перенаправит весь HTTP-трафик на этот обратный прокси-сервер.
  3. Настройте свои HTTP-серверы на 3 server#.example.com для прослушивания альтернативного порта - возможно, 8080.
  4. Наконец, настройте обратный прокси-сервер для пересылки трафика на основе host заголовок HTTP обслуживает порт 8080.

Настройка альтернативного порта на HTTP-серверах должна быть довольно простой. Единственная немного сложная часть - это настройка обратного прокси, но вы можете найти множество примеров того, как это делается с использованием pound, apache или nginx.

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

Обычно вы переносите вперед. Если вы хотите, чтобы server1 был вашим отправляющим почтовым сервером, вы бы перенаправили порт 25 (скорее всего), с server2 в качестве вашего веб-сервера, вы бы перенаправили порт 80 на server2, и если server3 должен был быть вашим веб-сервером SSL, тогда вы перенаправите на него порт 443. Таким образом, ОДИН IP обрабатывает все 3 сервера ... но один IP может обрабатывать только один набор заданий - эти задания могут быть разделены между несколькими серверами.