Servidor proxy invers amb IIS

22 setembre 2013
Josep Ma Solanes 0

Des de la retirada de Microsoft ISA/TMG del catàleg de productes, la meva preocupació ha estat trobar una aplicació que em realitzés les funcions de proxy invers i sembla ser que ja he trobat l’alternativa.

Per què és útil un proxy invers?

Un proxy invers permet compartir en una mateixa adreça IP i pel mateix port TCP diferents serveis web, separant-los mitjançant una part de l’adreça URL per la que es fa la petició. Poso un exemple. Si necessito publicar el servei de correu electrònic Web (correu.jmsolanes.cat), el portal col·laboratiu (portal.jmsolanes.cat) i potser una granja d’escriptoris virtuals (escriptoris.jmsolanes.cat); però només disposo d’una única IP pública.

Tinc algunes opcions:

  • Utilitzar el tallafocs per publicar els diferents serveis amb un port públic diferent i mitjançant el NAT connectar amb servei intern. Exemple:
    • Correu web pel port 80 extern cap al 80 intern del servidor de correu.
    • Portal col·laboratiu pel port 81 extern cap al 80 intern del servidor del portal.
    • Escriptoris virtuals pel port 82 extern cap al 80 intern del servidor de connexions d’escriptoris virtuals.

Inconvenients. Que des de dins la xarxa, s’utilitza un port concret i estàndard al servei (80). En canvi per les connexions exteriors s’utilitza un port diferent en cada servei i no estàndard. Això vol dir que l’usuari, haurà d’especificar en cada cas el port de servei per accedir (correu.jmsolanes.cat; portal.jmsolanes.cat:81; escriptoris.jmsolanes.cat:82). No és pràctic pels usuaris us ho asseguro.

  • Utilitzar un servei de proxy invers, que detecta el nom de la petició i permet passar la petició a un altre equip. Aquesta funció la feia a la perfecció Microsoft ISA/TMG, o també altres dispositius del tipus appliance (maquinari específic), etc…

Em direu que si ja hi ha altres dispositius que ho fan, perquè complicar la vida? Doncs perquè no tots els clients es poden permetre adquirir i/o mantenir un appliance d’aquest tipus per unes poques connexions que poden tenir al dia i s’ha de donar solució a tothom.

Què es fa?

L’esquema ensenya l’estructura lògica de serveis per millor enteniment del que es fa. Un equip client vol connectar a un servei web. Primer es fa una petició de l’adreça URL (correu.jmsolanes.cat) al servei DNS que retorna l’adreça IP del servidor proxy (192.168.0.50). D’aquesta manera, el client fa la comunicació al servidor proxy (192.168.0.50).

El servidor proxy llegeix la capçalera de la petició que li arriba (correu.jmsolanes.cat), comprova a la seva llista de regles o llocs webs que serveix. Troba la regla que coincideix amb la capçalera (correu.jmsolanes.cat) que diu que ha d’encaminar la petició a la IP 192.168.0.51.

La petició arriba al servidor de correu (192.168.0.51) amb la capçalera original (correu.jmsolanes.cat). Al tenir el servidor només un sol lloc web proporciona les dades sol·licitades. En el cas del portal i la extranet, el servidor d’Extranet (192.168.0.52), torna a llegir la capçalera i retorna el lloc web indicat a la mateixa (portal… o extranet…).

proxyinvers-00

 

Amb què ho soluciono doncs?

Amb un servidor Microsoft Windows Server 2008R2/2012, Internet Information Services 7/8, la característica .NET Framework 3.5 i el mòdul Application Request Routing (ARR).

Com ho fem?

Instal·lar el rol de Internet Information Services (IIS)

Partint d’una instal·lació estàndard de Microsoft Windows Server 2012, afegir el rol de Internet Information Services 8. Per fer-ho, accedim a l’Administrador del servidor, opció “Panel” i clicar a “Agregar roles y características“. A la pregunta del tipus de instal·lació, seleccionar “Instalación basada en características o en roles” i clicar a “Siguiente“.

proxyinvers-01 proxyinvers-02

A servidor de destino, marcar “Seleccionar un servidor del grupo de servidores” i clicar a “Siguiente“. De la llista de rols, marcar Servidor web (IIS), surt una advertència de la necessitat de disposar les eines d’administració, clicar a “Agregar características

proxyinvers-03 proxyinvers-04 proxyinvers-14

 

 

A características, marcar l’opció “Características de .NET Framework 3.5” ja què és un requisit pel mòdul ARR.

En cas de voler instal·lar aquesta característica des dels fitxers d’instal·lació, sense connexió a Internet, obrint una consola amb privilegis d’administrador, escriure la següent instrucció (canviant, si cal, la unitat on es troba la carpeta sources):

dism /online /enable-feature /featurename:netfx3 /all /source:d:\sources\sxs

Es configuren les opcions d’instal·lació de IIS, clicar a “Siguiente“.

proxyinvers-16

Marcar les següents opcions:

  • Servidor Web
    • Característiques HTTP comunes
      • Contenido estático
      • Documento predeterminado
      • Errores HTTP
      • Examen de directorios
  • Estado y diagnóstico
    • Registro HTTP
  • Rendimiento
    • Compresión de contenido estático
  • Seguridad
    • Filtrado de solicitudes
  • Herramientas de administración
    • Consola de administración de IIS

Un cop marcats tots, clicar a “Siguiente“. Es pot repassar la llista de característiques. Si tot és correcte, clicar a “Instalar“. Esperar fins que s’acabi la instal·lació i ja es pot tancar l’assistent, clicar a “Cerrar“.

proxyinvers-17 proxyinvers-18

 

Instal·lar el mòdul Application Request Routing (ARR)

A data d’avui hi ha disponible la versió 3.0. que és la utilitzada. Al no ser una aplicació integrada al sistema operatiu, cal descarregar-la abans. Per tant, des d’un navegador accedir a la Web http://www.iis.net/downloads/microsoft/application-request-routing. Seleccionar Install this extension i a continuació Web platform Installer. Descarregar l’arxiu de l’enllaç.

proxyinvers-05 proxyinvers-06

Amb permisos d’administrador, fer doble clic a l’arxiu descarregat. Seguir les instruccions de la pròpia aplicació, que de fet ho fa tot sol. Acabada la instal·lació del “Web platform Installer”, s’engega la instal·lació de l’encaminador de sol·licituds d’aplicacions (ARR). Clicar a “Instalar“.

proxyinvers-10 proxyinvers-11

Acceptar les condicions i continuar. En acabar, és necessari reinicialitzar l’equip. Clicar a Si.

proxyinvers-13 proxyinvers-19 proxyinvers-20

Després de reinicialitzar, continua la instal·lació fins a completar.

proxyinvers-21 proxyinvers-22

 

 

Configuració ARR

Obrir la consola d’administració de Internet Information Services IIS. Per exemple, des de l’administrador del servidor, seleccionar el menú Herramientas i Administrador de Internet Information Services (IIS). Pot ser que sol·liciti l’ús de la plataforma web de Microsoft per connectar als components de la plataforma web més recents. Clicar a Si.

proxyinvers-23 proxyinvers-24

Ja amb la consola oberta, seleccionar el nom del servidor i desplegar l’arbre d’opcions. Si tot és correcte, surt una nova branca anomenada “Server Farms“.

proxyinvers-25 proxyinvers-27

Toca crear una granja per a cada grup de servidors web on es vol encaminar el trànsit. Seguint l’exemple, s’hauria de crear una granja pel correu electrònic, una pel portal i una altre pels escriptoris. Tot seguit es descriu el procés per crear-ne una, la resta, és cosa de les necessitats de cada solució.

Crear una granja

Botó dret a la branca Server Farms i seleccionar “Create Server Farm“. Introduir el nom de la granja, deixar marcat Online i clicar a “Siguiente“. Introduir l’adreça IP del servidor que disposa del servei que volem encaminar, per exemple, el servidor de correu electrònic OWA. Deixar marcat Online (aquest opció serveix pel manteniment del servidor en cas que hi hagués més d’un servidor que mantingués el servei). Clicar a Add. A “Advanced settings” es pot canviar el port dels protocols http (80) i https (443) per defecte a on s’ha de fer la petició. En aquest cas es deixa per defecte, no cal tocar-ho. Clicar a Finalizar.

proxyinvers-07 proxyinvers-08 proxyinvers-29

Pregunta si es volen crear les regles per les rutes, clicar a Si per finalitzar.

proxyinvers-30

 

Toca personalitzar la configuració de la granja perquè funcioni correctament les peticions de proxy invers. Seleccionar la granja, a la banda dreta apareixen les icones d’opcions.

proxyinvers-31

 

CACHING. Memory cache duration a 60. Desmarcar Enable disk cache. Desmarcar Enable request consideration. Deixar Query string support a Ignore query string.

proxyinvers-42

 

PROXY. Http version: Pass through. Marcar Keep alive. Time-out a 30. Desmarcar Reverse rewrite host in response headers.

Custom Headers. Preserve client IP in the following headers: X-Forwarded-For. Marcar Include TCP port from client IP. Forward encoded client certificate in the following header: X-ARR-ClientCert. Mark request logs with GUIDs in the following header: X-ARR-LOG-ID.

Buffer Settings. Response buffer: 4096. Response buffer threshold: 256.

proxyinvers-43

 

ROUTING RULES. Marcar Use URL rewrite to inspect incoming requests. Desmarcar Enable SSL offloading. Les extensions i els patrons configurar segons les necessitats. En aquest cas es deixen en blanc.

proxyinvers-44

 

Crear les regles d’encaminament

Les regles d’encaminament pel proxy invers es creen a l’arrel del servidor, no en els diferents llocs web. Des de l’administrador de Internet Information Services (IIS) seleccionar el servidor. A la banda dreta, surten les diferents opcions. En l’apartat IIS, clicar la opció “Reescritura de dirección URL“. En la imatge es poden observar ja unes quantes regles creades.

proxyinvers-01 proxyinvers-50

En el menú d’accions de la dreta, clicar a “Agregar reglas…” i en el quadre que surt, a l’apartat “Reglas de entrada“, seleccionar “Regla en blanco” i clicar a “Aceptar“.

proxyinvers-51

Es crea una nova regla d’entrada.

proxyinvers-52

Per un encaminament senzill llegint la capçalera per HTTP, la configuració és:

  • Nombre: el que correspongui.

Coincidir dirección URL:

    • Dirección URL solicitada: Coincide con el patrón
    • Usando: Expresiones regulares
    • Patrón: (.*)
    • Marcar Omitir mayúsculas y minúsculas

Condiciones

  • Entrada: {HTTP_HOST}
  • Tipo: Coincide con el patrón
  • Patrón: URL del domini (Exemple: correu.jmsolanes.cat. En cas de tenir varies URLs al mateix servidor, separar-les amb el símbol d’encadenament |. Pel servidor d’extranet seria: portal.jmsolanes.cat|extranet.jmsolanes.cat.
  • Desmarcar Seguir los grupos de capturas a través de condiciones.

Variables de servidor

  • Deixar en blanc.

Acción

  • Tipo de acción: Enrutar a granja de servidores
  • Propiedades de la acción
    • Esquema: http://
    • Granja de servidores: la que correspongui
    • Ruta de acceso: /{R:0}
  • Marcar Detener el procesamiento de las reglas siguientes, per evitar que continuï buscant.

proxyinvers-53 proxyinvers-54

Quan tot sigui correcte, a la barra lateral dreta, clicar la opció “Aplicar“.

Per aplicar els canvis al servidor Internet Information Services (IIS), cal reinicialitzar-lo.

Obrir una consola de sistema amb privilegis d’administrador i executar la instrucció:

iisreset

proxyinvers-55

 

Si tot és correcte, tornat a l’exemple del diagrama, quan es fa una petició URL que apunta a la IP del servidor proxy, aquest repassa la llista de regles. Si troba la coincident, encamina la petició al servidor corresponent, per retornar el resultat esperat (servidor de correu, portal o extranet).

proxyinvers-59 proxyinvers-60 proxyinvers-61

 

T’ha agradat l’article? El pots compartir a les xarxes socials. També pots deixar la teva opinió, comentari o suggeriment. Gràcies!

Similar Posts by The Author: