Protocolo SSH: 1 ip, 2 nombres de dominio, 2 servidores

1

¿Es posible tener este escenario? (No estoy hablando de sitios web ni de nada relacionado con apache)

Tanto example1.com como example2.com apuntan a la misma IP.

Si ssh a example1.com:22 va al servidor1 desde LAN
Si ssh a example2.com:22 va al servidor2 desde la misma LAN

Ambos servidores están en la misma LAN con la misma IP y sshd se ejecuta en el mismo puerto.

Daniel S
fuente
1
Esto se hace todo el tiempo. Una sola dirección IP puede alojar docenas de sitios web.
Ramhound
3
sitios web sí con hosts virtuales apache, pero ¿podemos tener ssh por ejemplo en el puerto 22?
Daniel S
¿Están sus servidores detrás de un enrutador NAT?
heavyd
1
sí, están bajo un enrutador Nat
Daniel S
3
@punked: claramente tendrían que estar en diferentes puertos. SSH es SSH, puede estar en el puerto 4000 o 22, no importa.
Ramhound

Respuestas:

6

No creo que lo que intentas hacer sea posible.

Hasta donde yo sé, SSH no tiene un concepto de nombres de host en el nivel de protocolo, e incluso si lo hiciera, está hablando de conectarse a diferentes hosts según el nombre de host que utiliza para obtener la dirección IP para conectarse, cuando el La dirección IP obtenida es la misma y podría obtenerse sin ninguna participación, incluso de los servidores de nombres example1.com y example2.com, por lo que no hay nada a lo que conectarse.

En HTTP / 1.1, cada solicitud viene con un Host:encabezado cuyo valor es el nombre de dominio utilizado en el navegador web (u otro cliente). Estos datos a nivel de protocolo permiten que el servidor web maneje las solicitudes de diferentes dominios, incluso cuando todos se asignan a una sola dirección IP. Tenga en cuenta que el alojamiento virtual basado en nombres fue una de las principales mejoras en HTTP / 1.1 sobre el protocolo original versión 1.0.

Que podría ser posible hacer algo parecido a lo que busca el uso de SRVregistros DNS , pero yo no lo he probado y soporte de software para registros SRV es irregular en el mejor. Tal configuración probablemente dependerá en gran medida del cliente que use para conectarse, si se puede hacer que funcione.

Sin embargo, puede hacer algo similar en el lado del cliente usando ~ / .ssh / config (suponiendo OpenSSH; otro software debería ser capaz de hacer algo similar a través de otros mecanismos) con alias de host y especificadores de puerto. Luego puede ejecutar algún tipo de proxy (probablemente NAT o PAT ) frente a ambos hosts y reenviar conexiones en función del número de puerto entrante. Con un divisor lo suficientemente sofisticado frente a los hosts, es posible que pueda hacer algo con el golpe de puerto .

un CVn
fuente
1
Si ha visto esto hecho con Apache, es porque los navegadores transmiten un Host:encabezado HTTP que identifica el dominio al que intentan conectarse. Por lo tanto, el servidor puede servir diferentes páginas dependiendo del host entrante: encabezado, y Apache admite exactamente eso. SSH no hace esto.
LawrenceC
@ultrasawblade Buen punto para explicar cómo funciona eso; Lo he incorporado a mi respuesta.
un CVn