Como crear un CDN con windows server 2016

Voy a ir apuntando las cosas que he realizado para tener un seguimiento

 

Parece ser que Windows Server ha incorporado DNS policies para gestionar el trafico.

1 Paso Crear la zona primaria

2 Paso a través de powershell crear las subredes correspondientes, parece ser que solo se pueden añadir a través de powershell.

Add-DnsServerClientSubnet -Name "America" -IPv4Subnet 192.0.0.0/24,182.0.0.0/24 
Add-DnsServerClientSubnet -Name "Europa" -IPv4Subnet 141.1.0.0/24,151.1.0.0/24

Podemos consultar las subredes con

Get-DnsServerClientSubnet

Una vez que las subredes de cliente estén en su lugar, el siguiente paso es dividir la zona “midominio.com” en dos ámbitos de zona diferentes, cada uno para América y Europa.

Un ámbito de la zona es una instancia única de la zona. Una zona DNS puede tener varios ámbitos de zona, con cada ámbito de zona que contiene su propio conjunto de registros DNS.

El mismo registro puede estar presente en múltiples ámbitos, con diferentes direcciones IP.

De forma predeterminada, existe un ámbito de zona en las zonas DNS. Este ámbito de zona tiene el mismo nombre que la zona y las operaciones de DNS heredadas funcionan en este ámbito.

Add-DnsServerZoneScope -ZoneName "midominio.com" -Name "AmericaZoneScope"
Add-DnsServerZoneScope -ZoneName "midominio.com" -Name "EuropaZoneScope"

El siguiente paso es agregar los registros que representan el host del servidor web en los dos ámbitos de zona: AmericaZoneScope y EuropaZoneScope.

En AmericaZoneScope, se agrega el registro midominio.com con la dirección IP 192.0.0.1, que se encuentra en un datacenter americano; Y en EuropaZoneScope se agrega el mismo registro (midominio.com) con la dirección IP 141.1.0.1 en el datacenter europeo.

Add-DnsServerResourceRecord -ZoneName "midominio.com" -A -Name "www" -IPv4Address "192.0.0.1" -ZoneScope "AmericaZoneScope
Add-DnsServerResourceRecord -ZoneName "midominio.com" -A -Name "www" -IPv4Address "141.1.0.1" -ZoneScope "EuropaZoneScope"

Añadimos los siguientes registros también se agregan al ámbito de zona predeterminado para garantizar que el resto del mundo todavía puede acceder al servidor web midominio.com desde cualquiera de los dos centros de datos.

Add-DnsServerResourceRecord -ZoneName "midominio.com" -A -Name "www" -IPv4Address "192.0.0.1"
Add-DnsServerResourceRecord -ZoneName "midominio.com" -A -Name "www" -IPv4Address "141.1.0.1"

Una vez creadas las subredes y las particiones (ámbitos de zona), el siguiente paso es crear políticas que conecten estos dos, de manera que cuando la consulta proceda de una fuente en la subred de cliente de América, la respuesta se devuelve desde el ámbito de América De la zona y así sucesivamente. No se requieren directivas para asignar el ámbito de la zona predeterminada.

Add-DnsServerQueryResolutionPolicy -Name "AmericaPolicy" -Action ALLOW -ClientSubnet "eq,AmericaSubnet" -ZoneScope "AmericaZoneScope,1" -ZoneName "midominio.com"
Add-DnsServerQueryResolutionPolicy -Name "EuropaPolicy" -Action ALLOW -ClientSubnet "eq,EuropaSubnet" -ZoneScope "EuropaZoneScope,1" -ZoneName "midominio.com"

 

+INFO

https://blogs.technet.microsoft.com/networking/2015/05/11/geo-location-based-traffic-management-using-dns-policies/

https://docs.microsoft.com/es-es/windows-server/networking/dns/deploy/dns-policies-overview

 

Lo podemos comprobar a través de whatsmydns.net

 

Comandos del powershell para el DNS de microsoft:

  • DnsServerRecursionScope agregar. Este cmdlet crea un nuevo ámbito recursividad en el servidor DNS. Ámbitos de recursión se usan por las directivas DNS para especificar una lista de servidores de reenvío para usarse en las consultas DNS.
  • Quitar DnsServerRecursionScope. Este cmdlet quita ámbitos recursividad existentes.
  • Conjunto DnsServerRecursionScope. Este cmdlet cambia la configuración de un ámbito de recursión existente.
  • Get-DnsServerRecursionScope. Este cmdlet recupera información sobre los ámbitos de recursión existentes.
  • DnsServerClientSubnet agregar. Este cmdlet crea una nueva subred del cliente DNS. Las subredes se usan por las directivas DNS para identificar dónde se encuentra un cliente DNS.
  • Quitar DnsServerClientSubnet. Este cmdlet quita subredes existentes del cliente DNS.
  • Conjunto DnsServerClientSubnet. Este cmdlet cambia la configuración de una subred existente del cliente DNS.
  • Get-DnsServerClientSubnet. Este cmdlet recupera información sobre subredes existentes del cliente DNS.
  • DnsServerQueryResolutionPolicy agregar. Este cmdlet crea una nueva directiva de resolución de consulta DNS. Directivas de resolución de consulta DNS se usan para especificar cómo hacerlo, o si se responde una consulta, en función de distintos criterios.
  • Quitar DnsServerQueryResolutionPolicy. Este cmdlet quita las directivas existentes de DNS.
  • Conjunto DnsServerQueryResolutionPolicy. Este cmdlet cambia la configuración de una directiva existente de DNS.
  • Get-DnsServerQueryResolutionPolicy. Este cmdlet recupera información sobre las directivas existentes de DNS.
  • Habilitar DnsServerPolicy. Este cmdlet permite políticas DNS existente.
  • Deshabilitar DnsServerPolicy. Este cmdlet deshabilita las directivas existentes de DNS.
  • DnsServerZoneTransferPolicy agregar. Este cmdlet crea una nueva directiva de transferencia de zona de servidor DNS. Directivas de transferencia de zona DNS especifican si deseas denegar o pasar por alto una transferencia de zona basada en distintos criterios.
  • Quitar DnsServerZoneTransferPolicy. Este cmdlet quita directivas de transferencia de zona de servidor DNS existentes.
  • Conjunto DnsServerZoneTransferPolicy. Este cmdlet cambia la configuración de una directiva de transferencia de zona de servidor DNS existente.
  • Get-DnsServerResponseRateLimiting. Este cmdlet recupera la configuración de RRL.
  • Conjunto DnsServerResponseRateLimiting. Este cmdlet cambia RRL settigns.
  • DnsServerResponseRateLimitingExceptionlist agregar. Este cmdlet crea una lista de excepciones RRL en el servidor DNS.
  • Get-DnsServerResponseRateLimitingExceptionlist. Este cmdlet recupera RRL excception listas.
  • Quitar DnsServerResponseRateLimitingExceptionlist. Este cmdlet quita una lista de excepciones RRL existente.
  • Conjunto DnsServerResponseRateLimitingExceptionlist. Este cmdlet cambia RRL listas de excepciones.
  • DnsServerResourceRecord agregar. Este cmdlet se ha actualizado para admitir el tipo de registro desconocido.
  • Get-DnsServerResourceRecord. Este cmdlet se ha actualizado para admitir el tipo de registro desconocido.
  • Quitar DnsServerResourceRecord. Este cmdlet se ha actualizado para admitir el tipo de registro desconocido.
  • Conjunto DnsServerResourceRecord. Este cmdlet se ha actualizado para admitir el tipo de registro desconocido

Diferencia entre memoria RAM y Memoria ROM

Hablaremos un poco sobre el concepto y las características de una memoria, sea de tipo RAM o de tipo ROM, que aunque tengan diferencias, siguen siendo un par de dispositivos electrónicos con diminutas diferencias pero con similares tareas.

El concepto básico de una memoria física según la Wikipedia es:

Se refiere a componentes de un ordenador, dispositivos y medios de grabación que retienen datos informáticos durante algún intervalo de tiempo.

Principalmente, partimos de la idea de que es un dispositivo electrónico perteneciente a la unidad central de proceso (C.P.U.), para lo que cualquier dato contenido en la misma es accesible casi instantáneamente.

Posee un tamaño limitado y su costo es elevado, por lo que se suele complementar con la llamada memoria extrema o secundaria; está constituida de semiconductores de silicio y circuitos electrónicos. Los datos se almacenan en ella en un conjunto de casilleros numerados desde 0 en orden creciente (0,1,2,3,4,5…0+n).

Algunas de las características fundamentales de las memorias (de cualquier tipo) son las que a continuación detallaré detenidamente en las siguientes líneas de texto…

Volatilidad

Se dice que la información almacenada en una memoria es volátil siempre y cuando corra el riesgo de verse alterada en caso de que se produzca algún fallo de suministro de energía eléctrica (memorias biestables).

No son volátiles aquellas en las cuales la información, independientemente de que exista algún fallo en el fluido eléctrico, permanece inalterada.

Dicho de otra manera, cualquier de éstas dos memorias (RAM y ROM) es volátil por su incapacidad de permanecer inalterada de cara a cualquier fallo eléctrico que presente la misma. Por ésta simple razón específica, las memorias RAM y ROM son volátiles.

Tiempo de Acceso

Es el tiempo que transcurre desde el instante en que se lanza la operación de lectura en la memoria y el instante en que se dispone de la primera información buscada. En la memoria principal, este tiempo es, en principio, independiente de la dirección en la que se encuentre la información a la cual queremos acceder.

Se puede ir un poco más al grano diciéndo que el tiempo de acceso es el tiempo requerido o necesitado para realizar cualquier operación, sea lectura o escritura. Es simplemente eso, el tiempo que se solicita a la memoria para poder ejecutar cualquier operación específica.

Capacidad

La capacidad de una memoria (RAM y ROM) es el número de posiciones de un sistema, o dicho de otra manera, número de informaciones que puede contener una memoria.

La capacidad total de memoria será un dato esencial para calibrar la potencia de un computador. La capacidad de la memoria se mide en múltiplos de byte (8 bits): kilobytes (1.024 bytes) y megabytes (1.024 kilobytes).

Si bien es cierto, aquí sí se aplica la frase de a mayor capacidad, mayor velocidad. A la hora de escoger una memoria, intenta escoger un valor que sea óptimo (sea de 512 megabytes, 1 gigabyte o así) para que tengas mejor rendimiento en tu computadora.

¿Que son cables de red LSZH?

Cable LSZH quiere decir Low Smoke Zero Halogen que significa baja emisión de Humo y cero Alogenos, es una clasificación de materiales típicamente utilizados para chaquetones en la industria de alambres y cables.

El revestimiento de cable LSZH está compuesto de compuestos termoplásticos o termoestables que emiten humo limitado y no halógeno cuando se exponen a altas fuentes de calor intensa.

La mayoría de los cables de red están aislados con polietileno, PVC o poliuretano termoplástico. En un incendio, un material plástico que contiene cloro libera cloruro de hidrógeno, un gas venenoso que forma ácido clorhídrico cuando entra en contacto con el agua. Los cables sin halógenos designados, por otra parte, no producen una combinación peligrosa de gas / ácido cuando se exponen a la llama.

El cable halógeno de bajo nivel de humo cero reduce la cantidad de gases tóxicos y corrosivos emitidos durante la combustión. Este tipo de material se utiliza típicamente en áreas mal ventiladas como aviones, vagones de tren o barcos. También se utiliza ampliamente en la industria del ferrocarril, siempre que los hilos de alta tensión o señal de pista se deben ejecutar a través de sistemas de túneles subterráneos. Esto reduce la posibilidad de acumulación de gases tóxicos en estas áreas en caso de que los cables sean dañados por un incendio o un fallo de cortocircuito.

 

Cómo elegir la base de datos entre MyISAM o InnoDB

El motor de almacenamiento se encarga de almacenar, manejar y recuperar información de una tabla. Los motores más conocidos son MyISAM e InnoDB. La elección de uno u otro dependerá mucho del escenario donde se aplique.

En la elección se pretende conseguir la mejor relación de calidad acorde con nuestra aplicación. Si necesitamos transacciones, claves foráneas y bloqueos, tendremos que escoger InnoDB. Por el contrario, escogeremos MyISAM en aquellos casos en los que predominen las consultas SELECT a la base de datos.

InnoDB dota a MySQL de un motor de almacenamiento transaccional (conforme a ACID) con capacidades de commit (confirmación), rollback (cancelación) y recuperación de fallos. InnoDB realiza bloqueos a nivel de fila y también proporciona funciones de lectura consistente sin bloqueo al estilo Oracle en sentencias SELECT.

Estas características incrementan el rendimiento y la capacidad de gestionar múltiples usuarios simultáneos. No se necesita un bloqueo escalado en InnoDB porque los bloqueos a nivel de fila ocupan muy poco espacio. InnoDB también soporta restricciones FOREIGN KEY. En consultas SQL, aún dentro de la misma consulta, pueden incluirse libremente tablas del tipo InnoDB con tablas de otros tipos

InnoDB

InnoDB es una tecnología de almacenamiento de datos de fuente abierta para MySQL, incluido como formato de tabla estándar en todas las distribuciones de MySQL AB a partir de las versiones 4.0. Su característica principal es que soporta transacciones de tipo ACID y bloqueo de registros e integridad referencial. InnoDB ofrece una fiabilidad y consistencia muy superior a MyISAM, la anterior tecnología de tablas de MySQL, si bien el mejor rendimiento de uno u otro formato dependerá de la aplicación específica.

  • Soporte de transacciones
  • Bloqueo de registros
  • Nos permite tener las características ACID (Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español), garantizando la integridad de nuestras tablas.
  • Es probable que si nuestra aplicación hace un uso elevado de INSERT y UPDATE notemos un aumento de rendimiento con respecto a MyISAM.

MyISAM

MyISAM es la tecnología de almacenamiento de datos usada por defecto por el sistema administrador de bases de datos relacionales MySQL. Este tipo de tablas están basadas en el formato ISAM pero con nuevas extensiones. En las últimas versiones de Mysql, el motor InnoDB está empezando a reemplazar a este tipo de tablas por su capacidad de ejecutar transacciones de tipo ACID y bloqueo de registros e integridad referencial.

  • Mayor velocidad en general a la hora de recuperar datos.
  • Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.
  • Ausencia de características de atomicidad ya que no tiene que hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones, esto nos lleva como los anteriores puntos a una mayor velocidad

Cómo buscar por tipo de archivo en Google

Para ello, basta con añadir el comando “filetype:…” al final de la búsqueda que hayamos realizado, donde los puntos suspensivos son la extensión del archivo que estemos buscando.

Todo esto quedará más claro en un ejemplo.

Imagínate que estás buscando una presentación en Powerpoint sobre la situación de la economía.

Escribimos “situación mundial” en el recuadro de búsqueda y luego añadimos “filetype:ppsx”.

De este modo nos buscará solo archivos que tengan esta extensión.

Ejemplos de busquedas:

situacion mundial filetype:xls
situacion mundial filetype:docx
situacion mundial filetype:pdf
situacion mundial filetype:swf

Cómo limpiar el caché DNS en Google Chrome

Lo primero que tenemos que hacer para limpiar el caché DNS en Google Chrome es abrir el propio navegador.

Una vez dentro del navegador abrimos una nueva pestaña en blanco y en la barra de direcciones escribimos:

chrome://net-internals/#dns

Una vez que hayamos entrado en este menú, veremos todas las resoluciones DNS que hemos realizado recientemente, además, aparecerá la fecha y hora de caducidad.

Una vez que hayamos entrado en este menú, debemos pinchar en el botón “Clear host caché” para borrar todo el caché DNS que estaba almacenado tal y como habéis visto anteriormente. Una vez borrado, se borrará toda la tabla que habéis visto en la captura anterior.

Una vez que lo hayamos hecho, habremos limpiado todo el caché DNS de nuestro navegador Google Chrome.

Acceso a Bases de Datos – ADO.NET – Modo Desconectado, con ASP .Net y MVC4

Hasta el momento se ha empleado una conexión abierta hacia la base de datos para realizar las peticiones de consulta o actualización de información persistente, sin embargo un compañero comentó que sería bueno hacer hincapié en que, según la necesidad del cliente, se podría hacer uno de un “modo desconectado” de acceso a base de datos. Lo cual recuerda que sería bueno definir los conceptos de modo conectado y desconectado.

Pero… ¿A qué se refieren los desarrolladores con los términos conectado o desconectado?

La forma común y más fácil de implementar en el modo “conectado” o modo de trabajo en el cual el sistema abre una conexión, realiza una acción (o transacción) sobre la base de datos y al final cierra dicha conexión por lo cual los datos quedan persistentes inmediatamente. El modo desconectado sería lo equivalente a hacer una copia local de los objetos de la base de datos sobre las que se desea trabajar (realizando una única apertura inicial de la conexión a base de datos al inicio), para manipularlos con el número de transacciones que se desee y finalmente hacer un volcado del resultado sobre la base de datos, momento en el cual los cambios son recién persistentes.

Esquema del modo desconectado de acceso a BBDD

 

La pregunta que os surgirá en estos momentos, es ¿Cual es más eficiente? La respuesta es “Depende”.

Si se ha optado por un sistema en el que se va a manipular datos muy delicados y un cambio no registrado puede significar una gestión errónea en una transacción que se ejecute inmediatamente después de la primera, por lo que sería recomendable que dicha aplicación tenga un sistema conectado, ya que de esta manera en todo momento la comunicación con la base de datos y la información estará actualizada. Sin embargo esto va a producir un alto consumo de recursos (entre ellos, las aperturas y cierres de conexiones además de las operaciones de gestión interna del sistema gestor de base de datos) pero va evitar errores que podrían suponer graves consecuencia para el cliente. Por poner un ejemplo sencillo piénsese en un banco o tienda online donde un cambio en la cuenta puede afectar a las siguientes acciones disponibles, generando un error si no se actualizan los cambios inmediatamente.

Por otro lado, si el sistema en cuestión no requiere de una actualización continua de información  sería recomendable utilizar una conexión en modo desconectado, donde la información se carga al iniciar la aplicación y en la que se vaya refrescando cada determinado tiempo según el criterio que se crea conveniente. Este tipo de sistemas agota los recursos de una manera completamente distinta, ya que en un sistema conectado, solo tenemos que recuperar la información que no sea necesaria en ese momento, mientras que en este caso recuperaremos mucha información inicialmente, para poder cerrar la base de datos. Para citar un ejemplo se puede pensar en un volcado masivo entra bases de datos.

Se dice que el objeto DataReader realiza un modo conectado ya que necesita tener un curso abierto a la base de datos para poder operar sin embargo el DataSet se dice que es desconectado ya que este ejecuta carga los valores en memoria, desconecta y cuando se requiera se volverá a conectar para realizar un volcado de los datos contenidos en memoria en el soporte persistente de datos.

Elementos presentes en la base de datos

 

Por otro lado, si el desarrollador lo desea también podría servirse de ambas tecnologías para la consecución de sus fines, ya que puede usar en DataReader para leer y volcar los valores a objetos de clases personalizadas y luego desconectar, de la misma manera que lo hace DataAdapter, pero manualmente.

Ahora se mostrará cómo se haría un acceso a base de datos y manipulación por medio de un modo Desconectado.

Para empezar se definirá el controlador de la página es el siguiente:

Controlador de la vista ADO_Desconectado

A destacar que se utilizará el mismo código de vista que se ha utilizado en el post anterior, simplemente se cambiará el código del método utilizado en modelo, el cual será llamado getAllDataDesconectado

Codigo presente en el Modelo para la obtención de datos en modo desconectado.

Como se puede ver, el programador ha creado un DataSet en el que ha añadido una tabla llamada “Asistentes”. El DataAdapter llenará de datos al DataSet en su tabla Asistentes. Y posteriormente se leerán los datos del DataTable y se realizará la acción que más convenga, en este caso, guardarlos datos en una lista para devolvérsela al controlador.

Como paso final solo quedaría mostrar el resultado en la vista.

 

Ahora que ya se sabe hacer una consulta sobre la base de datos utilizando el modo desconectado, no es complicado hacer modificaciones o eliminaciones sobre los elementos del DataSet y así, al volcar los datos a la base de datos al final de la operación, modificar los elementos persistentes en la base de datos.

Network Monitor, ‘sniffer’ desarrollado por Microsoft

Network Monitor es un ‘sniffer’ o programa de análisis de tráfico de red desarrollado por Microsoft, y el cual no tiene nada que envidiar al archiconocido ‘WireShark’, teniendo incluso características que lo hacen más potente que este último a la hora de realizar determinadas tareas como el análisis de malware o procesos.

Esta característica se basa en la estructura de árbol que realiza para la diferenciación de los paquetes, teniendo dos grupos principales, ‘My Traffic’ – relativo a las conexiones entrantes o salientes de nuestro equipo – y ‘Other traffic’ – relativo a las conexiones que no están interactuando con nuestro equipo. En la siguiente captura de pantalla se puede ver un ejemplo de este sistema de organización.

clip_image001

Figura 1: Organización de conexiones de red en Network Monitor
Tras tener una visión general de los procesos que se están comunicando a través de la interfaz de red vemos ‘prablinha.exe’, un malware con finalidad educativa, el cual fue instalado en el equipo intencionadamente para llevar a cabo un estudio de este proceso. Es aquí donde entra en juego la principal característica de ‘Network Monitor’, permitiendo ver de una manera muy esquemática las conexiones que ha lanzado el proceso seleccionado, como se ve a continuación.

clip_image003

Figura 2: Conexiones de un proceso
Adicionalmente, también dispone de numerosas funcionalidades como distintas plantillas de visualización de los paneles, ‘parsers’ o identificación de una gran cantidad de protocolos, un sistema de plugins, y un completo sistema de filtrado por protocolo, similar a la siguiente captura, donde se ve cómo se está realizando un filtrado para mostrar únicamente las peticiones HTTP que contienen un código de respuesta ‘200 OK’.

clip_image005

Figura 3: Filtrado de paquetes
Tal y como habéis podido observar, Network Monitor permite de una forma ágil y sencilla la visualización de las conexiones de cada uno de los procesos, pudiendo así identificar el malware más fácilmente. Sin duda se trata de un analizador de red poco conocido, pero de gran potencia.