Configuración de servicios de redireccionamiento HTTP estáticos basados en motores de enrutamiento
A partir de Junos OS versión 19.3R2, el servicio de redireccionamiento HTTP también es compatible si ha habilitado los servicios de próxima generación en la serie MX.
Puede configurar los servicios de redireccionamiento HTTP en el motor de enrutamiento como alternativa al uso de una tarjeta de servicios MS-MPC/MS-MIC o MX-SPC3. Configure el jardín amurallado como un filtro de servicio de firewall. Un jardín amurallado es un grupo de servidores que proporcionan al suscriptor acceso a sitios dentro del jardín amurallado sin requerir reautorización a través de un portal cautivo. El filtro de servicio de jardín amurallado identifica el tráfico destinado al jardín amurallado y el tráfico destinado fuera del jardín amurallado. Solo el tráfico HTTP destinado fuera del jardín amurallado se envía al motor de enrutamiento para que lo procese el servicio de redireccionamiento HTTP. El servicio CPCD está asociado a una interfaz de servicio en el motor de enrutamiento mediante un conjunto de servicios.
Las interfaces de servicio en el motor de enrutamiento se identifican con un prefijo si- (por ejemplo, si-1/1/0). La interfaz si- procesa todo el tráfico y los servicios de redireccionamiento y reescritura para el motor de enrutamiento. La interfaz si- debe estar operativa con un estado de up para habilitar y activar el servicio de entrega de contenido del portal cautivo (CPCD). Una vez habilitado el servicio CPCD, cualquier cambio en el estado operativo de la interfaz si- no afecta a los servicios CPCD existentes.
El servicio CPCD envía el tráfico de solicitud HTTP del suscriptor que no está destinado al jardín amurallado a un servidor de redireccionamiento, que responde con una URL de redireccionamiento. La URL de redireccionamiento envía tráfico a un portal cautivo en lugar de al sitio externo no autorizado. El portal cautivo proporciona servicios de autenticación y autorización para los suscriptores redirigidos antes de otorgarles acceso a servidores protegidos fuera del jardín amurallado.
El servidor de redireccionamiento puede ser local o remoto:
Servidor de redireccionamiento local: reside en el enrutador y redirige el tráfico de suscriptores a un portal cautivo dentro de un jardín amurallado.
Servidor de redireccionamiento remoto: reside en un dispositivo, como un servidor de políticas, dentro de un jardín amurallado detrás del enrutador. La dirección de destino del tráfico HTTP del suscriptor se reescribe en la dirección del servidor de redireccionamiento remoto. El servidor remoto redirige el tráfico de suscriptores a un portal cautivo dentro de ese jardín amurallado.
Configuración de un jardín amurallado como filtro de servicio de firewall
Cuando se configura el jardín amurallado como un filtro de servicio de firewall, se identifica y omite el tráfico destinado a los servidores dentro del jardín amurallado. El resto del tráfico HTTP está destinado a direcciones fuera del jardín amurallado. Dado que este tráfico no coincide con las condiciones del filtro, fluye hacia el motor de enrutamiento para su manejo.
Puede configurar el filtro de servicio para que el jardín amurallado contenga un único servidor como portal cautivo o una lista de servidores.
Configure el jardín amurallado con un solo servidor como portal cautivo:
Cree el filtro de servicio.
[edit] user@host# edit firewall family address-family service-filter filter-name
Defina un término de filtro para identificar y omitir el procesamiento del tráfico al portal cautivo.
Especifique las condiciones de filtro para que coincidan con el tráfico destinado al portal cautivo especificando la dirección de destino del portal cautivo y el puerto de destino.
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-address ip-address user@host# set term name from destination-port port-number
Especifique que el tráfico coincidente omite el procesamiento en la tarjeta de línea.
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
Defina un término de filtro para identificar el tráfico HTTP de todo el tráfico que no coincidía con el término anterior y envíelo para su procesamiento mediante las reglas del servicio CPCD.
Especifique uno o más números de puerto HTTP para que coincidan con el tráfico HTTP omitido.
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-port http-port-number
Especifique que un servicio CPCD procesa el tráfico coincidente.
[edit firewall family inet service-filter filter-name] user@host# set term name then service
Defina un término de filtro para omitir más acciones para cualquier tráfico restante que no sea HTTP.
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
Por ejemplo, la siguiente configuración crea un filtro para el tráfico HTTP IPv4, walled-v4, con el portal cautivo en 192.0.2.0. El procesamiento se omite para el tráfico que coincide con la dirección; El tráfico se envía al portal cautivo. El tráfico no coincidente va al término http, donde el tráfico HTTP se selecciona de todo el tráfico omitido y se envía para ser procesado de acuerdo con un servicio CPCD. Por último, la omisión de término hace que se omita todo el tráfico restante que no sea HTTP.
[edit] user@host# edit firewall family inet service-filter walled-v4 [edit firewall family inet service-filter walled-v4] user@host# set term portal from destination-address 192.0.2.0 user@host# set term portal from destination-port 80 user@host# set term portal then skip user@host# set term http from destination-port 80 user@host# set term http then service user@host# set term skip then skip
Configure el jardín amurallado como una lista o subred de servidores.
Cree el filtro de servicio.
[edit] user@host# edit firewall family address-family service-filter filter-name
Defina un término de filtro.
Especifique las condiciones de filtro para que coincidan con el tráfico destinado a cualquier servidor del jardín amurallado especificando una lista de prefijos de destino de servidores.
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-prefix-list list-name user@host# set term name from destination-port port-number
Especifique que el tráfico coincidente omite el procesamiento en la tarjeta de línea.
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
Defina un término de filtro para identificar el tráfico HTTP de todo el tráfico que no coincidía con el término anterior y envíelo para su procesamiento mediante las reglas del servicio CPCD.
Especifique uno o más números de puerto HTTP para que coincidan con el tráfico HTTP omitido.
[edit firewall family inet service-filter filter-name] user@host# set term name from destination-port http-port-number
Especifique que un servicio CPCD procesa el tráfico coincidente.
[edit firewall family inet service-filter filter-name] user@host# set term name then service
Defina un término de filtro para omitir más acciones para cualquier tráfico restante que no sea HTTP.
[edit firewall family inet service-filter filter-name] user@host# set term name then skip
(Opcional) Defina una lista de prefijos que especifique los servidores dentro del jardín amurallado. Puede especificar una subred o varias direcciones individuales.
[edit policy-options] user@host# set prefix-list list- name ip-address/mask user@host# set prefix-list list- name ip-address1 user@host# set prefix-list list- name ip-address2
Por ejemplo, la siguiente configuración crea un filtro para el tráfico HTTP IPv6, walled-v6-list, con una lista de prefijos, wg-list, que especifica dos servidores en el jardín amurallado. El término de filtro portal6 identifica el tráfico IPv6 destinado al jardín amurallado. El tráfico no coincidente pasa al término http6, donde el tráfico HTTP se selecciona de todo el tráfico omitido y se envía para ser procesado de acuerdo con un servicio CPCD. Finalmente, el término skip6 hace que se omita todo el tráfico restante que no sea HTTP.
[edit] user@host# edit firewall family inet6 service-filter walled-v6-list user@host# set term portal6 from destination-prefix-list wg-list user@host# set term portal6 then skip user@host# set term http6 from destination-port [80 8080] user@host# set term http6 then service user@host# set term skip6 then skip [edit policy-options] user@host# set prefix-list wg-list 2001:db8::10.10 user@host# set prefix-list wg-list 2001:db8::10.22
Configuración de la redirección HTTP para servidores de redirección locales y remotos
Cuando se realizan solicitudes HTTP para sitios fuera del jardín amurallado, CPCD puede redirigir el tráfico a un portal cautivo para su autenticación y autorización.
Configure una regla de servicio CPCD que especifique la acción que debe realizarse para el tráfico destinado fuera del jardín amurallado. Este tráfico fue identificado por el filtro de servicio de jardín amurallado y pasado al servicio, o identificado y aceptado por la regla de servicio de jardín amurallado. La acción que configure dependerá de si está utilizando un servidor de redireccionamiento HTTP local o remoto:
Si utiliza un servidor de redireccionamiento HTTP local en el enrutador, especifique la acción de redireccionamiento.
Si está utilizando un servidor de redireccionamiento HTTP remoto, que reside en un jardín amurallado detrás del enrutador, entonces no puede simplemente especificar una URL de redireccionamiento. En este caso, la regla de servicio debe reescribir la dirección IP de destino del tráfico. La nueva dirección de destino es la dirección del servidor de redireccionamiento HTTP remoto. A continuación, el servidor remoto proporciona una URL de redireccionamiento para enviar el tráfico a un portal cautivo.
El servicio CPCD está asociado a una interfaz de servicio mediante un conjunto de servicios. Tanto el conjunto de servicios como el filtro de servicio de jardín amurallado se aplican a una interfaz configurada estáticamente.
Por ejemplo, en la siguiente configuración para un servidor local, la regla de servicio CPCD redir-svc redirige el tráfico a un portal cautivo, http://www.portal.example.com
. La URL original introducida por el suscriptor se anexa a la URL de redireccionamiento.
user@host# edit services captive-portal-content-delivery user@host# edit rule redir-svc user@host# set match-direction input user@host# set term redir1 then redirect http://www.portal.example.com/url=%dest-url%
La siguiente configuración para un servidor remoto crea la regla de servicio CPCD rewr-svc que reescribe la dirección de destino original en la dirección del servidor remoto, 192.0.2.230.
user@host# edit services captive-portal-content-delivery user@host# edit rule rewr-svc user@host# set match-direction input user@host# set term rewr1 then rewrite destination-address 192.0.2.230
Configuración del perfil de servicio y del conjunto de servicios para asociar el perfil de servicio a una interfaz de servicio
Los conjuntos de servicios definen uno o más servicios que debe realizar el motor de enrutamiento. Para los servicios de redireccionamiento HTTP, se define un perfil de servicio CPCD que incluye reglas CPCD. El conjunto de servicios aplica el perfil de servicio CPCD a una interfaz de servicio específica.
Por ejemplo, la siguiente configuración crea el perfil de servicio CPCD redir-prof, que hace referencia a la regla CPCD redir-svc. El conjunto de servicios ss2 se especifica como para CPCD basado en motor de enrutamiento. El conjunto asocia el redir-prof del perfil de servicio de la CPCD con la interfaz de servicio si-4/0/0.
[edit services captive-portal-content-delivery] user@host# edit profile redir-prof user@host# set cpcd-rules redir-svc [edit services] user@host# edit service-set ss2 user@host# set service-set-options routing-engine-service user@host# set captive-portal-content-delivery-profile redir-prof user@host# set interface-service-service-interface si-4/0/0
Adjuntar un conjunto de servicios CPCD y un filtro de servicio a una interfaz lógica
Para utilizar los servicios de redireccionamiento HTTP, debe adjuntar el conjunto de servicios CPCD a una interfaz lógica. Si el jardín amurallado está configurado como un filtro de servicio, debe adjuntarlo a la misma interfaz que el conjunto de servicios. El tráfico que entra y sale de esa interfaz se filtra mediante el filtro de servicio. El tráfico identificado para el mantenimiento se envía a la interfaz de servicio del motor de enrutamiento, donde se aplica el perfil CPCD.
Por ejemplo, la siguiente configuración habilita servicios en línea en la tarjeta de línea en la ranura 4 del chasis y en el MIC en la ranura 0 de la tarjeta de línea. Asigna una dirección a la interfaz lógica. Luego conecta el conjunto de servicios sset2 y el filtro de servicio walled-v4 a ge-2/0/1.0 para la familia de direcciones IPv4. El conjunto de servicios y el filtro se aplican a la entrada y salida de la interfaz.
user@host# edit chassis fpc 4 pic 0 inline-services bandwidth 1g user@host# edit interfaces ge-2/0/1 unit 0 family inet user@host# set address 203.0.113.5 user@host# set service input service-set sset2 service-filter walled-v4 user@host# set service output service-set sset2 service-filter walled-v4
Insertar etiquetas de encabezado GET que el servidor HTTP puede utilizar para controlar el acceso al contenido
En algunos casos, es posible que desee que el servidor HTTP determine si desea permitir que los usuarios tengan acceso al contenido. A partir de Junos OS versión 19.1, puede configurar filtros de servicio de redireccionamiento HTTP estáticos basados en motor de enrutamiento para especificar las etiquetas que el motor de enrutamiento inserta en el encabezado del paquete de los mensajes HTTP GET para este fin. Puede insertar etiquetas para el nombre de host del enrutador o la dirección MAC, la dirección IPv4 o la dirección IPv6 del suscriptor.
Los siguientes pasos corresponden a la figura 1.
El dispositivo del usuario, el cliente HTTP, realiza una secuencia de protocolo de enlace TCP con el servidor HTTP.
Cuando el protocolo de enlace se realiza correctamente, el cliente envía un HTTP GET con la URL solicitada por el usuario.
El motor de enrutamiento modifica esa URL concatenando una cadena de caracteres aleatorios encerrados por /$ y $/. La longitud de la cadena coincide con la longitud combinada de las etiquetas que se insertarán más adelante. La cadena sirve como identificador cuando el cliente la devuelve.
Supongamos que la longitud de las etiquetas que se van a insertar es de 30 caracteres y la URL solicitada es http://192.51.100.20/test.html. El motor de enrutamiento devuelve la dirección URL modificada con una cadena de 30 caracteres aleatorios, como en el ejemplo siguiente:
http://192.51.100.20/test.html/$IIGSbVdNDTDvnJFIAyoysXwVJawoYj$/
El motor de enrutamiento envía la URL modificada con un código de estado de 302 (encontrado) o 307 (redireccionamiento temporal). El código enviado depende de la versión de HTTP que se utilice y de la versión de Junos OS en el BNG. Ambos códigos indican al cliente que la solicitud de acceso debe reenviarse con la URL modificada.
El motor de enrutamiento restablece la conexión TCP con el cliente y el servidor.
El cliente realiza un protocolo de enlace TCP con el servidor HTTP para una dirección URL modificada.
El cliente envía un HTTP GET con la URL modificada.
El motor de enrutamiento comprueba si la longitud de la cadena concatenada es la misma que la enviada al cliente.
Si la longitud es correcta, devuelve la URL a la URL solicitada originalmente, inserta las etiquetas en el encabezado GET y reenvía la GET al servidor HTTP. Si está configurado, el GET se puede reenviar opcionalmente a una URL de redireccionamiento en lugar del servidor solicitado originalmente.
Si la longitud no es correcta, el motor de enrutamiento descarta el paquete e incrementa el contador de entrega.
El servidor HTTP evalúa el mensaje GET y envía una respuesta al cliente con un código de estado de 200 (OK) si concede acceso o 403 (Forbidden) si se rechaza la solicitud.
El motor de enrutamiento termina la conexión TCP con el cliente y el servidor.
Las etiquetas se insertan en el encabezado en el mismo orden en que están configuradas. El nombre de la etiqueta distingue entre mayúsculas y minúsculas, por lo que tag ABCD
y tag abcd
se procesan como nombres diferentes.
Para configurar las etiquetas que se insertarán en los encabezados GET:
Por ejemplo, la siguiente configuración crea una regla de servicio, insert-rule, que coincide con el tráfico en la interfaz de entrada. El término t1 inserta dos etiquetas, x-mac-addr con la dirección MAC del suscriptor y x-sub-ip con el valor de la dirección IPv4 del suscriptor.
[edit] user@host# edit services captive-portal-content-delivery rule insert-rule user@host# set match-direction input user@host# set term t1 then insert tag x-mac-addr tag-value subscriber-mac-addr user@host# set term t1 then insert tag x-sub-ip tag-value subscriber-ip
En la siguiente regla de ejemplo, solo se etiqueta el tráfico con una dirección de destino que coincida con 198.51.100.50 o 198.51.100.75. Se insertan etiquetas para la dirección IP del suscriptor y el nombre de host del enrutador. Un segundo término de la regla proporciona una URL de redireccionamiento en la que el tráfico se reenvía en lugar de enviarse a la URL solicitada originalmente.
user@host# edit services captive-portal-content-delivery user@host# set match-direction input user@host# set rule tag-redirect term t1 from destination-address 198.51.100.50 user@host# set rule tag-redirect term t1 from destination-address 198.51.100.75 user@host# set rule tag-redirect term t1 then insert tag x-sub-ip tag-value subscriber-ip user@host# set rule tag-redirect term t1 then insert tag x-hostname tag-value hostname user@host# set rule tag-redirect term t2 then redirect http://www.portal.example.com user@host# set profile http-insert-redirect cpcd-rules tag-redirect
Al igual que con cualquier regla de servicio CPCD para la redirección HTTP basada en motor de enrutamiento, debe incluir las reglas en un perfil de servicio CPCD y, a continuación, utilizar un conjunto de servicios CPCD para asociar el perfil a una interfaz de servicio en línea. El motor de enrutamiento utiliza las reglas para procesar el tráfico HTTP que pasa por un filtro de servicio en la misma interfaz lógica que el conjunto de servicios.
Considere la siguiente configuración de ejemplo. La regla de redireccionamiento de etiquetas se define para que coincida con el tráfico en la interfaz de entrada y, a continuación, inserte dos etiquetas en el encabezado GET, el valor de la dirección IP del suscriptor y el nombre de host del enrutador. A continuación, la regla proporciona una URL de redireccionamiento para el tráfico etiquetado. El perfil de servicio CPCD http-insert-redirect se define para incluir esta regla.
user@host# edit services captive-portal-content-delivery user@host# set match-direction input user@host# set rule tag-redirect term t1 then insert tag x-sub-ip tag-value subscriber-ip user@host# set rule tag-redirect term t1 then insert tag x-hostname tag-value hostname user@host# set rule tag-redirect term t2 then redirect http://www.portal.example.com user@host# set profile http-insert-redirect cpcd-rules tag-redirect
El conjunto de servicios sset1 se define como para CPCD basado en motor de enrutamiento. Aplica el perfil de servicio CPCD a una interfaz de servicio en línea.
user@host# edit services service-set sset1 user@host# set service-set-options routing-engine-services user@host# set captive-portal-content-delivery-profile http-insert-redirect user@host# set interface-service service-interface si-1/1/0
El filtro de servicio walled-tag identifica y actúa sobre tres tipos de tráfico: tráfico HTTP para enviar al jardín amurallado en 192.0.2.100, tráfico HTTP destinado a 198.51.100.50 para ir al procesamiento del servicio y todo el resto del tráfico que se omite. Este es un ejemplo de cómo hacer coincidir una dirección de destino en el filtro de servicio en lugar de en la regla de servicio.
user@host# edit firewall family inet service-filter walled-tag user@host# set term portal from destination-address 192.0.2.100 user@host# set term portal from destination-port 80 user@host# set term portal then skip user@host# set term http-tag from destination-address 198.51.100.50 user@host# set term http-tag from destination-port 80 user@host# set term http-tag then service user@host# set term skip then skip
El conjunto de servicios sset1 y la etiqueta muralizada del filtro de servicio se aplican a una interfaz lógica.
user@host# edit chassis fpc 4 pic 0 inline-services bandwidth 1g user@host# edit interfaces ge-2/0/1 unit 0 family inet user@host# set address 203.0.113.5 user@host# set service input service-set sset1 service-filter walled-tag user@host# set service output service-set sset1 service-filter walled-tag