Configuration de plusieurs servers pour partager une IP statique à l'aide de sous-domaines

Je search un moyen d'accéder à plusieurs servers partageant un seul IP statique en utilisant différents sous-domaines. Comme préavis, je n'ai jamais eu de configuration de réseau avant, alors ma connaissance de la terminologie appropriée est limitée.

En ce moment, j'ai 3 servers exécutant ubuntu 11.10 assis derrière un commutateur. J'aimerais y accéder en tant que server1.example.com, server2.example.com et server3.example.com. Lorsque tous les 3 étaient configurés avec la même adresse IP statique, une seule machine possédait une connection Internet. J'ai donc passé beaucoup de time à expérimenter dans / etc / network / interfaces, ce qui était probablement une grosse erreur, avant d'essayer de configurer iptables en suivant ce guide .

Je ne peux pas savoir par où commencer ou même quoi Google. Peut-être que j'ai besoin d'une configuration matérielle différente, actuellement, chaque machine possède une seule image, même si je peux find des maps réseau si nécessaire. En plus du commutateur, j'ai également un ancien routeur wrt54g.

MODIFIER

J'aimerais surtout avoir access HTTP, mais SSH est également important.

Vous ne pourrez pas avoir les 3 machines qui partagent une seule adresse IP. Pas comment fonctionne le networking. Vérifiez cette réponse sur la façon dont le routing réseau fonctionne pour une explication de pourquoi.

Ce que vous pourriez faire: configurez un proxy inverse en tant que votre passerelle et ensuite transmettez une adresse en fonction de l'en-tête de request d'hôte HTTP. Je reorderais d'utiliser Pound car il est léger et c'est uniquement un proxy HTTP inverse. Vous pourriez bien utiliser apache ou nginx pour accomplir la même chose si vous êtes plus familier avec ceux.

Une fois que vous avez votre configuration proxy inverse, vous pouvez utiliser NAT pour vos servers et configurer votre passerelle avec votre adresse IP statique.

Exemple sur la façon de le faire en Pound ( 1.2.3.4 est votre adresse IP statique, tous les server#.example.com sont des loggings A à cette adresse IP statique):

 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 

Réponse au commentaire

Si vous souhaitez conserver le proxy inverse dans l'un des servers actuels, vous devrez:

  1. Choisissez l'un des servers comme proxy inverse.
  2. Demandez à votre routeur d'avancer tout le trafic HTTP vers ce proxy inverse.
  3. Configurez vos servers HTTP sur le 3 server#.example.com pour écouter un autre port — peut-être 8080.
  4. Enfin, configurez votre proxy inverse pour transférer le trafic en fonction de l'en-tête host aux servers HTTP sur le port 8080.

La configuration d'un autre port sur les servers HTTP devrait être assez simple. La seule partie légèrement difficile serait la configuration du proxy inverse, mais vous pouvez find de nombreux exemples de ce fait en utilisant pound, apache ou nginx.

Généralement, vous ne pouvez pas configurer ceci par nom, en sélectionnant seulement par port. Je suppose qu'il est théoriquement possible d'avoir un périphérique qui écoute un nom et qu'il transmet à un système basé sur ce nom, mais je n'ai pas entendu parler d'un périphérique / programme qui le ferait. Vous pourriez avoir une réponse de server Web différemment selon le nom (d'où je crois que c'est théoriquement possible).

Généralement, vous reviendrez vers l'avant. Si vous vouliez que server1 soit votre server de messagerie d'envoi, alors vous redirigez le port 25 (probablement), avec server2 en tant que votre server Web, vous redirigez le port 80 vers le server2 et si server3 devait être votre server web SSL, alors vous redirectez le port 443. De cette façon, ONE IP gère les 3 servers … mais une seule IP ne peut gérer qu'un set de travaux – ces tâches peuvent être divisées sur plusieurs servers.