Configurar FTP pasivo en Microsoft Azure

lunes, 28 de abril de 2014

Hola a todos, recientemente tuve que realizar una configuración de un servidor FTP pasivo sobre la plataforma Microsoft Azure, para lo cual me fue de bastante utilidad el artículo de Sandrino Di Mattia, así que les contaré en nuestro idioma cómo lo hice.
Antes que nada, es importante aclarar que Azure soporta un total de 150 endpoints por máquina virtual, un endpoint podemos verlo como un puerto expuesto públicamente en nuestra máquina virtual en la nube, para el caso de FTP pasivo, debemos crear una buena cantidad de puertos para las conexiones, y desde el portal de administración de Azure no existe una forma de hacer esto de manera automática, razón por la cual es de gran utilidad el script de Sandrino, el cual nos permite hacerlo de manera rápida y sencilla, vemos entonces todo el proceso.

Antes que nada, debemos descargar el script que se encuentra en GitHub, haciendo clic aquí
El script en escencia veriffica que no utilicemos más de los 150 enpoints permitidos, agrega el puerto FTP público y los puertos dinámicos utilizados para la conexión de datos que indiquemos.
Entonces, vamos por pasos.

1. Crear endpoints de forma masiva en VM de Azure

Lo primero, es crear una variable utilizando el módulo de PowerShell para Windows Azure, en el cual almacenaremos los datos de la máquina, el comando a ejecutar debe ser como el siguiente:
$vm = Get-AzureVM -ServiceName "Nombre del servicio" -Name "Nombre máquina virtual"
Cabe aclarar que los valores entre comillas deben ser cambiados según el caso.

Una vez hecho lo anterior, podemos usar la variable como parámetro del script, en mi caso he renombrado el script, lo he llamado FTPEndpoints.ps1
Por lo cual, el siguiente comando a ejecutar debe quedar similar al siguiente:
.\FTPEndpoints.ps1 $vm 21 10000 10125
De lo anterior podemos decir que lo primero, es el nombre del script, que en mi caso es FTPEndpoints.ps1, luego tenemos la variable creada en el paso anterior $vm luego debemos especificar el puerto de control FTP público, que en este ejemplo es 21, por último tenemos el rango de puertos dinámicos de datos separados por un espacio, para lo cual crearemos desde el 10000 hasta el 10125

Si se encuentran en este paso y reciben el siguiente mensaje de error:
[Microsoft.WindowsAzure.Management.ServiceManagement.Model.PersistentVMRoleContext]: make sure that the assembly containing this type is loaded


No se asusten, debemos realizar un pequeño cambio al script para que funcione como debe ser.
Si editamos el script veremos lo siguiente, quiero que presten especial atención a la línea 4 del código.

Lo que se encuentra encerrado en rojo: [Microsoft.WindowsAzure.Management.ServiceManagement.Model.PersistentVMRoleContext] debemos reemplazarlo por lo siguiente:
[Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVMRoleContext] como podemos ver en la siguiente imagen:

Una vez realizado el cambio, volvemos a intentar ejecutar el script y todo saldrá bien!

Una vez finalizado el proceso de creación de los endpoints, podemos ir al portal de administración de Azure, y veremos que efectivamente han sido creados los endpoints.

 2. Configurar servidor FTP
Para este paso omitiré la instalación del rol FTP en la máquina virtual, asumo que es un proceso que no requiere mayor explicación, y que si estás consultando este tema de FTP pasivo muy probablemente ya hasta lo tengas instalado. Empecemos de una vez con la configuración desde la consola de IIS.

Primero, agregaremos un sitio FTP

la ventana de configuración SSL , indicamos No SSL, y especificamos el puerto de control, que en mi caso es el 21


En autenticación dejamos básica y en autorización para todos los usuarios de lectura y escritura.


Bien, ahora lo que debemos hacer es abrir los mismos puertos que definimos como endpoints en el portal de Azure, pero en la característica de soporte para Firewall FTP, debemos definir exactamente el mismo rango, y además debemos especificar la dirección IP pública del servicio en la nube.



Luego, reiniciamos el servicio de FTP


Por último, debemos abrir en el Firewall de Windows los puertos para datos, y el puerto de control en caso de que se utilice uno diferente al 21, en mi caso solo abriré los puertos del 10000 al 10125


Ahora solo nos queda realizar una prueba de conexión FTP desde un cliente.


Asignar IP estática a una VM en Microsoft Azure

domingo, 6 de abril de 2014

Una de las limitaciones que teníamos con Windows Azure (ahora Microsoft Azure), era la restricción de usar direcciones IP estáticas, el entorno de Microsoft Azure tiene su propio DHCP que asigna las direcciones de manera automática y Microsoft recomendaba no poner direcciones estáticas o podíamos perder conectividad con la máquina virtual. Pues bien, a partir de la versión de Windows Azure Powershell 0.7.3.1, es posible establecer direcciones IP estáticas a nuestras VMs, en este artículo veremos como hacerlo a través de los cmdlets diseñados para ello.
En este momento tengo implementadas dos instancias de máquina virtual a las cuales se les ha asignado una dirección dinámicamente del segmento de red definido en la red virtual.


Ahora, vamos a explorar los cmdlet para trabajar con direccionamiento estático.
Primero exploremos el cl cmdlet Test-AzureStaticVnetIP el cual nos permite averiguar si una dirección IP está disponible o no, por ejemplo probemos con una de las direcciones IP asignadas dinámicamente a las VM, debería indicarnos que no está disponible. 

Test-AzureStaticVNetIP -VNetName Prueba -IPAddress 192.168.0.4 (Prueba es el nombre de la red virtual en este ejemplo)

omo podemos observar, el parámetro IsAvailabe tiene el valor False y el parámetro AvailableAddresses nos informa las direcciones que tenemos disponibles para asignar, vemos que la primera en la lista es 192.168.0.6, ejecutaremos el comando anterior para comprobar que efectivamente nos indique que está disponible.
Test-AzureStaticVNetIP -VNetName Prueba -IPAddress 192.168.0.6


En efecto podemos observar que esta dirección se encuentra disponible.
Ahora vamos a realizar las operaciones necesarias para asignar la IP 192.168.0.6 de forma estática a la máquina virtual llamada VM01
$staticIP = Get-AzureVM -ServiceName itprocloud1 -Name VM01 (Los parámetros a reemplazar son el nombre del servicio y de la VM)


Bien, ahora que tenemos los datos de la VM en la variable $staticIP podemos utilizar dicha variable como parámetro del cmdlet que usaremos para establecer la IP estática. Set-AzureStaticVnetIP

Set-AzureStaticVNetIP -VM $staticIP -IPAddress 192.168.0.6 | Update-AzureVM


Al finalizar la asignación de la IP, la VM se reiniciará automáticamente.


Una vez reinicie la máquina, podemos también verificar desde Powershell si la IP efectivamente fue asignada de manera estática.


De este modo ya tenemos una dirección IP estática para nuestra VM. Ahora apaguemos las máquinas desde el portal (desasignar), con lo cual no se garantiza que la dirección IP asignada dinámicamente se mantenga, es importante recordar que es diferente apagar la máquina desde el sistema operativo a apagarla desde el portal de administración, ésta seguna opción se conoce como desasignar, lo que significa que se liberan los recursos y no se factura por la máquina, con la primer opción así apaguemos la máquina Microsoft garantiza la IP asignada dinámicamente, mientras que si apagamos desde el portal, podemos llegar a perder la IP, de ahí la utilidad del procedimiento descrito en este artículo. Para comprobarlo vamos a apagar desde el portal dos máquinas virtuales, una con IP asignada dinámicamente y la otra es la que modificamos con los pasos anteriores, es decir; la que tiene la IP estática.


Como vemos, al apagar las máquinas desde el portal las direcciones IP han desaparecido, y si vemos al principio del artículo esta misma imagen las direcciones estaban asignadas de la siguiente manera:
VM01 192.168.0.4
VM02 192.168.0.5
Lo que hicimos fue cambiar la IP de la VM01 por la dirección 192.168.0.6, ahora prendamos las máquinas para ver qué ocurre.


Bien, como vemos la IP de la VM01 se conserva, ya que es la IP estática que establecimos, mientras que la VM02 perdió la IP 192.168.0.5 y en su lugar le fue asignada la IP 192.168.0.4
Espero esta información les sea de utilidad. Hasta la próxima.

 

Lo más visto

Comunidad

Comunidad
Comunidad Técnica

Visitas