Está en la página 1de 176

Cómo iniciar un laboratorio en casa:

Parte 1 - Proxmox VE
 Proxmox
 Cómo hacer la serie de laboratorio en casa
 Laboratorio casero

30 de junio de 2019 (Actualizado el 25 de octubre de 2019)

Escrito por: Dan Ford


Un desarrollador y consultor de TI que cree que cada solución debe priorizar el rendimiento, la
usabilidad y el mantenimiento. Conectar con Dan en Twitter , LinkedIn , GitHub , o Facebook .

Tabla de contenido
 Por qué Home Lab
o Pros
o Contras
 ¿Por qué no Docker?
 ¿Qué es Proxmox VE?
 Requisitos
 Obtener Proxmox
 Instalar Proxmox
 Reparar actualizaciones de software
 Crea una VM

Mantén la calma y pásalo


Si encuentra esto útil, considere compartirlo en las redes sociales para ayudar a correr la voz.

En esto 6 partes serie continua , configurará un laboratorio doméstico básico


capaz de albergar múltiples proyectos en Internet utilizando software gratuito y de
código abierto (FOSS), y trabajará hasta llegar a redes y sistemas de laboratorio
doméstico más avanzados. Mi intención para esta serie es comenzar poniendo en
funcionamiento un sistema simple y amigable para principiantes, y guiar a los
lectores por el camino de mejorar y actualizar su laboratorio en casa, avanzando
progresivamente con el tiempo, y eventualmente trabajando hasta el hogar
avanzado. redes, sistemas de alta disponibilidad (HA), redes de área de
almacenamiento (SAN), servidores de correo electrónico y más. Si se queda
atascado en el camino, no dude en pedirme ayuda .

Cómo hacer la serie de laboratorio en casa


Una serie de tutoriales sobre cómo construir un sistema completo de laboratorio en casa desde cero que
sea fácil de usar para principiantes, versátil y de fácil mantenimiento.

No se pierda el siguiente segmento: suscríbase a mi lista de correo para


mantenerse actualizado. Y si se queda atascado en algún lugar del camino,
no dude en comunicarse conmigo para obtener ayuda, estaré feliz de ayudar
de cualquier manera que pueda.

Por qué Home Lab


Hay muchas razones para ejecutar un laboratorio en casa y, al igual que los pros y
los contras de hacerlo, estas son mis opiniones:

Pros

 Divertido, tal vez soy extraño, ¡pero me encantan estas cosas!


 Aprendizaje: la experiencia obtenida de un laboratorio en casa, además de
ser valiosa por derecho propio, puede guiarlo para tomar mejores
decisiones de diseño e implementación en proyectos futuros.
 Ahorro de dinero: solo pague el hardware, el registro de nombres de
dominio y la electricidad; el alojamiento y otros servicios son gratuitos
 Sea dueño de sus datos: debido a que la nube es solo la computadora de
otra persona, esto es especialmente un motivador para mí cuando se trata
de correo electrónico

Contras

 Actualizaciones de software: ¡tantas actualizaciones!


 Fiabilidad: es difícil ejecutar un sistema de alta disponibilidad en una sola
ubicación, si su energía o Internet se apagan, su laboratorio y servidores se
apagan con él.
 Responsabilidad: si algo sale mal, es mejor que tenga una copia de
seguridad de sus datos críticos, porque nadie más lo hará.
Relacionados Cómo hacer el laboratorio en casa: Parte 9 - Expandiendo su red
doméstica

¿Por qué no Docker?


Docker es increíble y lo uso todo el tiempo, pero creo que es más fácil comenzar
con Promox y las máquinas virtuales, y en ocasiones las cosas son más fáciles de
lograr en una máquina virtual que en un contenedor Docker. No solo eso, sino que
puede colocar un host Docker en una máquina virtual Proxmox y obtener lo mejor
de ambos mundos como lo hago en mi propio laboratorio doméstico. Dicho esto,
planeo presentar Docker en el futuro, probablemente en mi próxima serie de
laboratorio doméstico.

¿Qué es Proxmox VE?


Proxmox VE es un entorno de virtualización de código abierto, esencialmente es
un conjunto de herramientas que incluye una interfaz web muy agradable para
administrar máquinas virtuales. Una máquina virtual es como cualquier otra
computadora o servidor, excepto que no tiene ningún hardware físico, se ejecuta
en el mismo hardware que el host de virtualización, el hardware está
'virtualizado'. Puede tener tantas máquinas virtuales como desee en un host de
virtualización, siempre que el hardware del host pueda manejar la carga de
trabajo.

Si bien es cierto que hay otras herramientas de virtualización disponibles, es muy


similar a los argumentos de Mac vs Linux vs Windows en el sentido de que la
gente siempre tendrá una preferencia firme. Uso Proxmox porque es de código
abierto y me gusta la interfaz de usuario y el conjunto de funciones que ofrece,
pero al final del día creo que el usuario de Reddit benyanke lo dijo mejor:

"Aprender los fundamentos de la virtualización es mucho más difícil que aprender


una herramienta específica".

Requisitos
Para un laboratorio doméstico de lo esencial, realmente solo necesitamos dos
componentes principales; un host de virtualización y un dispositivo de red para
manejar el enrutamiento del tráfico. Cualquier PC relativamente moderna debería
funcionar siempre que la CPU admita la virtualización. ¿Quizás tienes una vieja
torre de computadoras en el garaje acumulando polvo? En cuanto al enrutamiento
del tráfico, su módem o enrutador existente debería funcionar bien por ahora, se
pueden implementar mejores alternativas en el futuro si lo desea.

Si no tiene una PC de repuesto para usar, le recomendaría comprar una Micro PC


QOTOM Q355G4; Si alguna vez desea actualizar su servidor, puede reutilizar esta
máquina para otra cosa. Ejecuto mi firewall (pfSense) en uno de estos y es
perfecto para el trabajo, y como beneficio adicional es bastante ligero en el uso de
energía (alrededor de 10 vatios en promedio). Disponible en Amazon.

Nota: Parece que el Qotom Q255G4 tiene pocas existencias para la mayoría de
los vendedores y se agota con frecuencia; puede consultar los listados de
búsqueda aquí para ver vendedores con unidades similares en existencia. Desea
al menos un procesador Intel i5-5200U (porque admite tanto la virtualización como
AES-NI) y 8GiB o más de RAM.

Como último recurso, podría ejecutar un laboratorio en su estación de trabajo


utilizando VMWare, Hyper-V, Parallels o virtualbox si así lo desea; Mi primer
servidor fue una vieja computadora portátil estropeada sin pantalla, ¡y funcionó
bien durante varios años! En cualquier caso, me enfocaré en usar una máquina
separada que se pueda configurar como un servidor siempre activo, ya que ese es
el método preferido.

Obtener Proxmox
Una vez que tenga una máquina para usar, pongamos en funcionamiento
Proxmox; Proxmox es un entorno de virtualización creado en Debian
Linux. Continúe y descargue el instalador más reciente del sitio web de Proxmox ,
luego diríjase a la página de instrucciones de instalación y siga los pasos para
crear un instalador USB.

Relacionados Cómo hacer el laboratorio en casa: Parte 7 - Gestión de registros

Instalar Proxmox
ADVERTENCIA: Todo lo que esté en su próxima máquina servidor se
eliminará , así que asegúrese de tener todas las cosas importantes fuera de él
antes de continuar.

Con su futuro servidor apagado, conecte el instalador USB de Proxmox. Querrá


ingresar al BIOS o UEFI de la computadora donde podemos alterar algunas
configuraciones, continúe y presione el botón de encendido, y luego comience a
presionar las teclas F2, F10 y DEL en el teclado repetidamente hasta que, con
suerte, termine en una pantalla de configuración. Si la computadora sigue
arrancando con el sistema anterior, es posible que deba buscar en la web la “tecla
de menú BIOS (modelo de su computadora)”.

Utilizar las teclas de flecha para navegar por el menú (por lo general hay
instrucciones en la parte inferior de la pantalla), en primer lugar buscar la
configuración de arranque y mover el instalador USB a la parte superior de la lista,
a continuación, mirar a través de la configuración avanzada para cualquier cosa
que diga virtualization, VT-x, VT-d, AMD-Vo IOMMUactive cualquiera que esté
disponible. Finalmente, busque la opción "Guardar y salir", el sistema se reiniciará
y, con suerte, cargará el instalador de Proxmox.

¡Impresionante! Presione enter para elegir la opción "Instalar Proxmox VE".

Si se le presenta la advertencia "No es compatible con KVM ..." como se muestra


a continuación, su CPU no es compatible con la virtualización o no está habilitada
en el BIOS, por lo que deberá regresar y verificar o hacer más búsquedas en la
web. para resolver esto.
Si ve la pantalla del acuerdo de licencia como se muestra a continuación, no
debería tener ningún problema con la virtualización. Continúe y haga clic en
"Acepto"
Elija un disco duro de destino, esta es la unidad en la que se instalará Proxmox, lo
más probable es que desee dejar esto en la configuración predeterminada.
La siguiente pantalla le pedirá que ingrese su país, zona horaria y distribución del
teclado.
A continuación, configure una contraseña de root e ingrese su dirección de correo
electrónico.
Ahora para la configuración de red:

Le animo a leer al menos las primeras secciones de mi artículo de introducción a


las redes informáticas antes de continuar, obtener la configuración de red aquí es
fundamental para poder acceder a la interfaz web de Proxmox más adelante.

 Nombre de host: puede poner lo que quiera aquí, yo elegiría un buen


nombre de dominio que pueda implementar más adelante para su red
doméstica bob.home, así que podría usarlo, por ejemplo pve.bob.home (PVE
significa Proxmox Virtual Environmnt)
o Nota: No desea usar .comningún otro dominio público de nivel
superior, y tampoco desea usar .localaquí por razones complicadas
que están más allá del alcance de este artículo, le sugiero que solo
use.home
 Dirección IP: querrá poner esto fuera del rango disponible para que no haya
conflictos más adelante. Si el valor predeterminado es algo
como, 192.168.0.23por ejemplo, querrá cambiarlo para
decir 192.168.0.201. Primero querrá hacer ping a la dirección que desea
usar para asegurarse de que no esté en uso. Escriba esta dirección IP para
que no la olvide, la necesitaremos más adelante.

Las configuraciones restantes deberían estar bien para los valores


predeterminados a menos que ya tenga configurada una red doméstica avanzada.

Puntos extra: si ya tiene una red doméstica avanzada, configure los registros
DHCP y / o DNS de su enrutador para que el nombre de host apunte a su
servidor. Está totalmente bien omitir este paso si no tiene idea de lo que estoy
hablando.
Verifique la configuración una vez más en la página de resumen y luego haga clic
en Instalar.

¡Lindo! Ahora puede ir a tomar un café o algo mientras el instalador se pone a


trabajar.
Reparar actualizaciones de software
Proxmox está configurado de forma predeterminada para obtener actualizaciones
de software del repositorio empresarial que requiere una suscripción paga para su
uso, solo tenemos que cambiarlo al repositorio comunitario gratuito para que las
actualizaciones funcionen correctamente.

Después de la instalación, se le pedirá que reinicie el sistema, continúe con eso y


extraiga la unidad USB cuando le indique "Retire el CD-ROM". ¿Alguien los usa
más? .

Después del reinicio, verá un texto sólo le pantalla que le pedirá a la


visita https://YourServerIP:8006(desde otro equipo), y eso es exactamente lo
que vamos a hacer a continuación, no se olvide de los s en httpso se producirá un
error al cargar la página.

Se le presentará una pantalla de inicio de sesión, continúe y utilice rootel nombre


de usuario y la contraseña que utilizó durante la instalación anterior.

Al iniciar sesión, se le presentará una advertencia de "No tiene una suscripción


válida", esto siempre aparecerá cuando inicie sesión y está bien, no vamos a usar
la Enterprise Edition, usaremos la versión gratuita. Community Edition, hay
algunos pasos para configurarlo.
En la columna de la izquierda, haga clic en el nombre que eligió para su servidor
durante la instalación, luego haga clic en el botón Shell en la parte superior
derecha.
Debería abrirse una nueva ventana con una línea de comando en el
servidor. Deberá escribir los cinco comandos a continuación para lograr lo
siguiente:

1. Vaya al directorio donde Advanced Package Tool (APT) busca repositorios


de actualizaciones de software
2. Cambie el nombre del archivo de configuración de Enterprise para que
tenga .disabled al final para que APT lo ignore
3. Cree un archivo de configuración para el repositorio de la comunidad
4. Actualizar la lista de paquetes de APT
5. Instale todas las actualizaciones de software disponibles

cd /etc/apt/sources.list.d
mv pve-enterprise.list pve-enterprise.list.disabled
echo 'deb http://download.proxmox.com/debian/pve buster pve-no-
subscription' > pve-community.list
apt update
apt -y dist-upgrade

Nota: Si está utilizando Proxmox versión 5 en lugar de 6, cambie "buster" a


"stretch" en la línea tres. Estos son los nombres de las versiones de Debian, las
versiones 5 y 6 de Proxmox se ejecutan en Debian Stretch y Buster
respectivamente.

Querrá reiniciar después de instalar las actualizaciones haciendo clic en el botón


de reinicio en la interfaz web, siéntase libre de elegir apagar aquí si desea mover
la computadora del servidor a otro lugar ahora que está todo configurado.
Crea una VM
Después del reinicio, vuelva a iniciar sesión (seguirá recibiendo una advertencia
de suscripción, sin embargo, no se preocupe), ahora necesitamos una imagen ISO
para configurar una máquina virtual. Puede usar cualquier sistema operativo que
desee para esto, estoy usando la imagen de Fedora Desktop para este
ejemplo. Para un servidor que desee una instalación mínima de Ubuntu Server o
CentOS, puede descargar la ISO para Ubuntu Server desde este enlace (desea
ceñirse a LTS o versiones de soporte a largo plazo para servidores de
producción).

Una vez que tenga una ISO en su estación de trabajo, vuelva a la interfaz web de
Proxmox y haga clic en la flecha desplegable junto al nombre de su servidor, haga
clic en local (almacenamiento), haga clic en contenido y luego en el botón de
carga. Elija la imagen ISO que acaba de descargar y espere a que se cargue en
su servidor.
Para crear una nueva máquina virtual, haga clic en el botón Crear VM en la parte
superior derecha, ingrese un nombre significativo para esta VM como todo-list-
appy haga clic en Siguiente.
En la pestaña Sistema operativo, haga clic en la flecha desplegable junto a la
imagen ISO y elija la que cargó anteriormente. Continúe y haga clic en Siguiente
hasta llegar a la pestaña CPU, puede experimentar con las otras configuraciones,
pero tenga en cuenta que algunas configuraciones pueden hacer que la VM no se
inicie dependiendo de su sistema, así que mantengamos esta primera realmente
simple.
Aquí puede elegir la cantidad de sockets y núcleos que tendrá su CPU virtual,
realmente no hay una diferencia significativa entre sockets y núcleos a menos que
tenga varias CPU en su servidor, generalmente solo uso núcleos y dejo sockets
configurados en 1 debido a la licencia implicaciones para software como el
servidor de Windows (aunque Microsoft parece estar avanzando hacia las
licencias basadas en el número de núcleos, por lo que ya no hace mucha
diferencia).
Para la memoria, le doy a esta VM 1024 MB de RAM, que es 1 GiB. Continúe,
haga clic en siguiente y acepte los valores predeterminados para todo lo demás,
es posible que desee reducir el tamaño del disco según la cantidad que tenga
disponible, debería poder ejecutar Ubuntu 18.04 Server en tan solo 4 GiB.
Después de que se complete la configuración (puede tomar unos minutos), verá el
nombre de su nueva y brillante VM en la columna de la izquierda, continúe y haga
clic en eso, luego haga clic en iniciar en la parte superior derecha y luego haga clic
en consola en el interior columna izquierda.
¡Eso es! ¡Ahora tienes una máquina virtual!
En este punto, siéntase libre de jugar y sentirse cómodo con su servidor de
virtualización. Intente agregar algunas máquinas virtuales más, tal vez algunos
sistemas operativos diferentes de diferentes imágenes ISO.

Cómo hacer el laboratorio en casa:


Parte 2 - Manejo de Proxmox VE
 Proxmox
 Cómo hacer la serie de laboratorio en casa
 Laboratorio casero
 Mantenimiento

30 de julio de 2019 (actualizado el 29 de octubre de 2019)


.

Tabla de contenido
 Prefacio
 Actualizaciones de software
 Actualizaciones de la versión PVE
 Copia de seguridad y restaurar
o Instantáneas frente a copias de seguridad
o Copia de seguridad y restauración manual
 Crear una copia de seguridad
 Reinstalar desde el respaldo
 Restaurar a una nueva máquina virtual desde la copia de seguridad
 Copias de seguridad programadas
 Solucionar el error "Se alcanzó el límite máximo de copias de seguridad"

Mantén la calma y pásalo


Si encuentra esto útil, considere compartirlo en las redes sociales para ayudar a correr la voz.

La intención de esta serie es poner en marcha a los nuevos trabajadores


domésticos con un laboratorio doméstico versátil, fácil de mantener y fácil de
mantener, y equiparlos con el conocimiento para administrar y utilizar con
confianza sus sistemas, y eventualmente trabajar hasta el hogar avanzado. redes,
sistemas de alta disponibilidad (HA), redes de área de almacenamiento (SAN),
servidores de correo electrónico y más.

Cómo hacer la serie de laboratorio en casa


Una serie de tutoriales sobre cómo construir un sistema completo de laboratorio en casa desde cero que
sea fácil de usar para principiantes, versátil y de fácil mantenimiento.

No se pierda el siguiente segmento: suscríbase a mi lista de correo para


mantenerse actualizado. Y si se queda atascado en algún lugar del camino,
no dude en comunicarse conmigo para obtener ayuda, estaré feliz de ayudar
de cualquier manera que pueda.

Prefacio
Debido a la emoción abrumadora que presencié durante el primer segmento de
esta serie, decidí hacerlo continuo en lugar de solo 6 partes, ¡eso no es suficiente
para cubrir el viaje que estamos haciendo juntos! Me gustaría agradecer a todos
los que brindaron comentarios y críticas constructivas que me ayudaron a mejorar
la edición inaugural de la serie de varias maneras, ¡sigan así!

Decidí exprimir este artículo sobre el mantenimiento de Proxmox antes de


continuar con la siguiente parte de la serie, siento que es una base importante que
sentar para alguien nuevo en todo esto, cubriremos actualizaciones de software,
actualizaciones de versión PVE, copia de seguridad de VM y restaurar y
programar copias de seguridad, incluido cómo habilitar la eliminación automática
de la copia de seguridad programada más antigua.

Si es nuevo o relativamente nuevo en Linux, le recomiendo el libro Sams Teach


Yourself Unix in 24 Hours de Dave Taylor, porque brinda una gran perspectiva
sobre los fundamentos de los sistemas operativos similares a Unix (incluido Linux),
encontré la sección en el árbol del sistema de archivos para ser particularmente
útil al principio de mi viaje a Linux. Disponible en Amazon.

Actualizaciones de software
Dado que aún no hemos configurado las alertas por correo electrónico, deberá
buscar nuevas actualizaciones con regularidad, sugiero una vez por semana como
mínimo.

Desde la interfaz web de Proxmox, haga clic en el nombre de su servidor, luego


haga clic en la pestaña de actualizaciones, luego en el botón de actualización para
verificar si hay actualizaciones de software disponibles.
Aparecerá una ventana que muestra el progreso, debería terminar con TASK OK,
siga adelante y cierre ese cuadro.

A continuación, haga clic en el botón de actualización.


Se abrirá una nueva ventana del navegador, que detalla qué actualizaciones se
instalarán y le pedirá que continúe, solo puede presionar enter aquí para
comenzar.

Cuando haya terminado, volverá al indicador de shell de bash y es seguro cerrar


esta ventana después de verificar si es necesario reiniciar, se mostrará un
mensaje al final de la actualización si este es el caso , como en la captura de
pantalla siguiente.
Si es necesario reiniciar, puede usar el botón de reinicio para hacerlo, cualquier
máquina virtual en ejecución debe apagarse automáticamente antes de que se
reinicie el host.

También debe mantenerse al día con las actualizaciones de software para cada
una de sus máquinas virtuales, los comandos difieren para cada sistema
operativo, pero en Ubuntu, debe ejecutar apt update, seguido de apt dist-
upgrade -ypara buscar e instalar todas las actualizaciones disponibles.

Actualizaciones de la versión PVE


Es probable que estos tengan nuevas peculiaridades y desafíos de una versión a
otra, ejecutaré la actualización de PVE 5 a 6 contigo aquí, fue bastante simple ya
que era una instalación básica de un solo host.

Realicé esta actualización después de leer y seguir las instrucciones oficiales de


actualización de Proxmox 5 a 6 que le recomiendo que eche un vistazo, hay todo
tipo de consideraciones especiales según la configuración de su sistema.

Si no lo ha hecho recientemente, instale todas las actualizaciones de software


como se indicó anteriormente para la versión 5 antes de continuar.

Desde la interfaz web, haga clic en el nombre de su servidor, luego haga clic en el
botón de shell.

Ejecute el comando pve5to6, que es una secuencia de comandos incorporada


para verificar la preparación de la actualización de sus sistemas.
Si los resultados muestran advertencias o errores, debe consultar los de la guía de
actualización oficial vinculada anteriormente, cualquier verificación omitida está
bien, simplemente no es relevante para su instalación.

A continuación, ejecute el comando a continuación, sedes una herramienta de


manipulación de archivos, la estamos usando aquí para encontrar el
texto stretchy reemplazarlo busteren el archivo /etc/apt/sources.list. Stretch y
Buster son nombres de lanzamiento para el sistema operativo Debian en el que se
basa Proxmox, y el archivo /etc/apt/sources.listes donde el administrador de
paquetes aptbusca de dónde extraer las actualizaciones de software. Este cambio
significa que la próxima vez que instalemos actualizaciones de software, también
actualizaremos la versión del sistema operativo de Stretch a Buster.

sed -i -e 's/stretch/buster/g' /etc/apt/sources.list

Ahora haremos el mismo cambio en el archivo /etc/apt/sources.list.d/pve-


community.listque es específicamente para las actualizaciones del software
Proxmox.

sed -i -e 's/stretch/buster/g' /etc/apt/sources.list.d/pve-community.list

Recomiendo encarecidamente iniciar sesión en el servidor en sí (no en la


interfaz web) para los pasos restantes, los hice desde la interfaz web y
resultó bien, pero si hace clic en cualquiera de los elementos del menú y
abandona la pantalla de shell, finalizará el sesión en medio de una
actualización del sistema operativo que puede causarle algunos problemas.

Ejecute el comando apt updatepara buscar todas las actualizaciones de software


para la nueva versión y luego el comando apt dist-upgrade -ypara instalarlas.
Se le presentará un aviso de que está realizando una actualización de la versión,
continúe y presione Intro para continuar, luego se le pedirá que seleccione la
distribución de su teclado.

Los siguientes pasos pueden diferir de un sistema a otro dependiendo de su


configuración, necesitará usar su mejor criterio para algunos de estos, pero
los pasos de mi actualización a continuación deberían darle una buena idea
de cómo manejar las cosas.

Es probable que se encuentre con varias instancias del mensaje ” Archivo de


configuración X Modificado… el distribuidor de paquetes ha enviado una versión
actualizada. "

Deberá elegir la opción " Mostrar las diferencias entre las versiones ".

En los casos en que haya cambios específicos en un archivo que deban


realizarse, pero también algunas modificaciones que le gustaría mantener, puede
elegir las opciones " iniciar un shell para examinar la situación ". Luego puede
navegar a la ruta del archivo ( /etcen este caso) y hacer una copia de su archivo
actual ( cp /etc/issue /etc/issue.custom), escriba exit y presione enter para
regresar a la pantalla de actualización, y elija la opción " instalar la versión del
mantenedor del paquete ", después la actualización puede utilizar el nanocomando
para editar el nuevo archivo ( nano /etc/issue) y utilizar el archivo antiguo como
referencia para su configuración personalizada ( cat /etc/issue.custom), puede
eliminar el archivo antiguo cuando haya terminado ( rm /etc/issue.custom).
Como puede ver en la captura de pantalla a continuación, este cambio eliminará el
mensaje de bienvenida predeterminado que se muestra en el servidor después del
inicio y lo reemplazará con Debian GNU/Linux 10(la leyenda en las dos líneas
superiores le indica que las líneas que comienzan con -solo existen en el
archivo /etc/issue, y las líneas comienzan con +existen solo en el
archivo /etc/issue/dpkg-newque es la versión enviada con el paquete
actualizado). El archivo /etc/issuegeneralmente solo se usa para mantener la
información de la versión del sistema operativo en un lugar fácil de encontrar, pero
Proxmox lo usó para almacenar el mensaje de bienvenida predeterminado.

Presione la qtecla para cerrar esta vista.


Ya sé cómo acceder a la interfaz web y no me importa perder el mensaje de
bienvenida predeterminado, así que presioné la ytecla para instalar el nuevo
archivo del mantenedor del paquete. En este caso, mantener la versión anterior
probablemente no perjudicaría nada, por lo que puede optar por conservarla si lo
desea.

El siguiente aviso que me mostraron (a continuación) me pregunta si quiero


permitir que los servicios se reinicien automáticamente cuando se hayan instalado
las actualizaciones de software. Depende de usted responder a esta pregunta, al
permitir que los servicios se reinicien, corre el riesgo de que se bloquee un servicio
en algunos casos excepcionales, y ese servicio permanecerá inactivo hasta que
note y resuelva el problema; al elegir no, debe reiniciar manualmente los servicios
actualizados o servicios dependientes después de las actualizaciones. Como
siempre pruebo la funcionalidad después de instalar las actualizaciones, elegí sí
aquí. (puede ejecutar el comando systemctl statuspara obtener una descripción
general de cómo está funcionando el sistema, específicamente verifique la failed
unitslínea, debe tener un valor de 0).
Otra discrepancia del archivo de configuración, esta vez para el
archivo /etc/ssh/sshd_config, este archivo es para decidir el comportamiento del
SSH Daemon, que permite el acceso remoto al shell de la línea de comandos del
servidor (SSH = Secure SHell). Al observar las diferencias en la captura de
pantalla a continuación, todo lo que ha cambiado es el número de versión y se han
eliminado un par de opciones; es probable que estas opciones ya no estén
disponibles en la nueva versión (el término técnico para esto está obsoleto), así
que instale la nueva versión de este archivo del mantenedor del paquete.
La última discrepancia de archivo que enfrenté fue fácil de resolver, el archivo de
configuración /etc/apt/sources.list.d/pve-enterprise.list, me deshice de
esto a favor de la edición comunitaria pve-community.list, así que elegí la opción
" mantener la versión instalada actualmente " que no existe porque no No quiero
este archivo en el sistema.

Eso no estuvo tan mal, ¿verdad? Todo lo que queda por hacer es reiniciar el
sistema cuando finalice la actualización.

Relacionados Cómo hacer el laboratorio en casa: Parte 9 - Expandiendo su red doméstica

Copia de seguridad y restaurar


Instantáneas frente a copias de seguridad

Es importante que comprenda la diferencia entre los dos y qué método es el


apropiado para el resultado que desea lograr. Las siguientes explicaciones se
proporcionan específicamente en el contexto de Proxmox.

Las copias de seguridad son una representación completa de una máquina


virtual, puede realizar una copia de seguridad y restaurarla en una nueva máquina
virtual o incluso en un nuevo host Proxmox y generar una nueva copia con poca o
ninguna modificación (moverse a un nuevo host puede requerir algunos cambios
para la configuración de la red en algunos casos). Siempre debe tener copias de
seguridad recientes de los sistemas críticos incluso cuando esté usando una
instantánea porque las copias de seguridad son superiores en versatilidad; sin
embargo, su creación y restauración lleva más tiempo que las instantáneas.

Las instantáneas son una representación de una máquina virtual de estado en


lugar de la máquina virtual en su totalidad, que es una distinción importante
porque no se puede girar hasta una nueva máquina virtual a partir de una
instantánea o moverlo a un nuevo huésped mediante una instantánea. Sin
embargo, tienen la ventaja de ser mucho más rápidos que una copia de seguridad
para crear y restaurar.

Como regla general, si solo desea crear un "punto de control" de una máquina
virtual antes de realizar una actualización importante o realizar un cambio
arriesgado, elija una instantánea para que pueda revertirla rápidamente si las
cosas salen mal, y elimine el instantánea cuando haya terminado. Para cualquier
otro caso de uso, solo use una copia de seguridad.

Copia de seguridad y restauración manual

CREAR UNA COPIA DE SEGURIDAD

Debería tener al menos una VM en este momento, así que hagamos una copia de
seguridad de eso. Está perfectamente bien realizar una copia de seguridad en una
máquina virtual que se está ejecutando, sin necesidad de apagarla. Explore el
nombre de su VM en el menú de la izquierda y haga clic en él, luego haga clic en
la pestaña de copia de seguridad y luego haga clic en el botón de copia de
seguridad ahora. Los pasos para trabajar manualmente con copias de seguridad e
instantáneas son prácticamente idénticos, por lo que omitiré repasar las
instantáneas, puede seguir estos mismos pasos utilizando la pestaña de
instantáneas en lugar de la pestaña de copias de seguridad
En el menú de opciones, están disponibles las siguientes opciones:

 Almacenamiento: dónde se guardará la copia de seguridad (es probable que solo


haya local disponible en este momento)
 Modo: siempre dejo esto en instantánea, lo que significa que el sistema tomará
una instantánea antes de realizar la copia de seguridad y la eliminará una vez
finalizada la copia de seguridad, esto es para que cualquier dato que se modifique
en la VM durante la copia de seguridad se ignorará en la copia de
seguridad. Básicamente, la copia de seguridad contendrá el estado en el que se
encontraba la máquina virtual cuando inició la copia de seguridad, cualquier
cambio realizado durante la copia de seguridad existirá solo en la instancia en
ejecución y no en la copia de seguridad.
 Compresión: siempre dejo esto en LZO, GZIP hace copias de seguridad más
pequeñas que ocupan menos espacio, pero esto lleva mucho más tiempo en
completarse.
 Enviar correo electrónico a: Dado que aún no hemos configurado las alertas de
correo electrónico, podemos dejarlo en blanco, es para enviar los resultados de la
copia de seguridad cuando se complete.

Cuando se inicia la copia de seguridad, se le presentará una pantalla de progreso,


es seguro cerrarla y dejar que la copia de seguridad se ejecute en segundo plano
si lo desea, puede volver a abrirla haciendo doble clic en la tarea de copia de
seguridad en la parte inferior sección de la interfaz web. Debería terminar con TASK
OK.
Si vuelve a la pestaña de copia de seguridad, verá la copia de seguridad de su
máquina virtual brillante en la lista (si no la ve, intente hacer clic en otra pestaña
en el menú y luego haga clic en volver a la pestaña de copia de seguridad). El
nombre del archivo siempre será algo comovzdump-qemu-(VM ID)-
(Year)_(Month)_(Day)-(Hour)_(Minute)_(Second).vma.lzo

Relacionados Cómo hacer el laboratorio en casa: Parte 7 - Gestión de registros


REINSTALAR DESDE EL RESPALDO

Desde la pestaña de copia de seguridad de su VM de destino, haga clic en el


nombre de la copia de seguridad que desea restaurar, luego haga clic en el botón
restaurar.
Tiene la opción de elegir qué dispositivo de almacenamiento usar (probablemente
su única opción en este momento sea local-lvm) y el límite de lectura para esta
acción. El límite de lectura establece la velocidad máxima de lectura del archivo de
copia de seguridad de origen y, posteriormente, limita la velocidad de escritura del
proceso de restauración, en mi sistema ocupado, lo uso 50 MiB/spara evitar
problemas de rendimiento con cualquier máquina virtual en ejecución, pero es
posible que desee aumentar o disminuir según Según el tipo de almacenamiento
que esté utilizando, mis dispositivos de almacenamiento se ejecutan en una matriz
RAID 10, por lo que son un poco más rápidos que un solo HDD pero más lentos
que un SSD.

RESTAURAR A UNA NUEVA MÁQUINA VIRTUAL DESDE LA COPIA


DE SEGURIDAD

También puede realizar una restauración en una máquina virtual que no sea la
que originalmente se realizó la copia de seguridad. Desde la interfaz web,
profundice en el almacenamiento en el que se encuentran sus copias de seguridad
(probablemente local), haga clic en la pestaña de contenido, luego en el nombre
de la copia de seguridad y luego en el botón de restauración.
Tiene dos nuevas opciones esta vez, VM ID, que es solo un identificador numérico
que es único para cada VM (¡no use valores inferiores a 100 aquí!), Y la casilla de
verificación única. La casilla de verificación única aleatorizará ciertos valores como
la dirección MAC para que la red vea esta máquina virtual como un sistema único
en comparación con el sistema originalmente respaldado, recomiendo dejar esta
casilla marcada.

Copias de seguridad programadas


Lo primero que debemos hacer es averiguar cuántas copias de seguridad
podemos almacenar para cada máquina virtual. Para calcular esto, usaremos la
siguiente fórmula:

(Espacio de copia de seguridad disponible / Tamaño total de una copia de


seguridad para todas las máquinas virtuales): 1 para relleno adicional

El - 1 para relleno adicional está ahí porque cuando se ejecuta la copia de


seguridad programada, creará una nueva copia de seguridad antes de eliminar la
copia más antigua, por lo que necesita un poco de espacio adicional para esa
acción.
Por ejemplo, si tengo 32 GiB de espacio de copia de seguridad disponible y 3
máquinas virtuales que ocupan cada una alrededor de 2 GiB por copia de
seguridad, la fórmula sería:

(32 GiB disponibles / (3 VM * 2 GiB cada copia de seguridad)) - 1 (32 / (3 * 2)) - 1


(32/6) - 1 5.33 - 1 = 4.33 Copias de seguridad

Redondeando, puedo almacenar 4 copias de seguridad para cada VM. Voy a


configurar copias de seguridad para guardar solo una copia en este tutorial, pero
puedo subir de forma segura hasta 4 siempre y cuando no agregue más máquinas
virtuales al programa de copias de seguridad.

Para encontrar el tamaño de la copia de seguridad de cada máquina virtual,


profundice hasta el nombre de esa máquina virtual en la interfaz web, haga clic en
la pestaña de copia de seguridad y encontrará el tamaño de cada archivo de copia
de seguridad en el extremo derecho; si hay varias copias de seguridad, utilice la
más grande. copia de seguridad de tamaño para sus cálculos.

Ahora que tenemos las cosas matemáticas fuera del camino, desde la interfaz
web, navegue hasta centro de datos> almacenamiento, haga clic en local (o su
almacenamiento de respaldo si ha agregado almacenamiento adicional), luego
haga clic en editar.
Junto al máximo de copias de seguridad, ingrese el número del cálculo anterior, o
simplemente use 1 como el que tengo si desea el máximo espacio para respirar
para futuras VM.

A continuación, vaya a centro de datos> copia de seguridad y haga clic en el botón


Agregar.
Configure el almacenamiento de destino y la hora / días como desee, deje en
blanco el campo Enviar correo electrónico a, ya que aún no lo hemos configurado,
y marque la casilla para cada VM de la que desee realizar una copia de seguridad
en este programa. Puedes tener tantos horarios como quieras,solo recuerde que
cada programa deberá modificarse en el siguiente paso para permitir la
eliminación automática de las copias de seguridad más antiguas.Actualización: no
es necesario modificar la tarea cron de respaldo en la mayoría de los sistemas. Si
su copia de seguridad programada falla con un error que indica que se alcanzó la
cantidad máxima de copias de seguridad, consulte los pasos al final de este
segmento para solucionar ese problema.

Eso es todo lo que tengo para este segmento, ¡y ya estoy trabajando en la parte 3
para ti! Mientras tanto, te dejo con esta increíble lista de proyectos
autohospedados de código abierto que puedes ejecutar en tu laboratorio
doméstico. ¿Quizás quieras hacer una lista de proyectos que te gustaría
configurar?

Solucionar el error "Se alcanzó el límite máximo de


copias de seguridad"
Estos pasos solo son necesarios si la copia de seguridad programada falla con un
error que indica que se alcanzó la cantidad máxima de copias de seguridad.

Abra una sesión de shell en su servidor.

Proxmox guarda las copias de seguridad programadas como trabajos cron, y cron
es un componente del sistema operativo Linux que solo ejecuta un comando en
una fecha y hora específicas, es una herramienta muy poderosa. Necesitamos
editar la configuración de la tarea cron para cada programa de copia de seguridad
que necesite eliminar automáticamente las copias de seguridad más antiguas, si
no lo hacemos, la copia de seguridad fallará una vez que se alcance el número
máximo de copias de seguridad.

nano /etc/cron.d/vzdump
Todo lo que necesita hacer es agregar --remove 1a cada línea justo antes de la --
mailnotificationconfiguración. Debería parecerse a la captura de pantalla a
continuación.

Cómo hacer el laboratorio en casa:


Parte 3 - Alojar un sitio de intranet con
pfSense y NAT
 pfSense
 Cómo hacer la serie de laboratorio en casa
 Redes
 NAT
 Laboratorio casero
 Proxmox

27 de agosto de 2019 (Actualizado el 31 de octubre de 2019)

 Prefacio
 Obtener pfSense
o Configurar la red de VM
o Configurar una máquina virtual pfSense
o Instalar pfSense
o Configurar pfSense
 Configurar una máquina virtual de Template Server
 Crear una máquina virtual de servidor web
o Calderería
o Instalar NGINX
 Reserva DHCP
 Configurar el reenvío de puertos
 Sirva una aplicación en NGINX

Mantén la calma y pásalo


Si encuentra esto útil, considere compartirlo en las redes sociales para ayudar a correr la voz.

La intención de esta serie es poner en marcha a los nuevos trabajadores


domésticos con un laboratorio doméstico versátil, fácil de mantener y fácil de
mantener, y equiparlos con el conocimiento para administrar y utilizar con
confianza sus sistemas, y eventualmente trabajar hasta el hogar avanzado. redes,
sistemas de alta disponibilidad (HA), redes de área de almacenamiento (SAN),
servidores de correo electrónico y más.

Cómo hacer la serie de laboratorio en casa


Una serie de tutoriales sobre cómo construir un sistema completo de laboratorio en casa desde cero que
sea fácil de usar para principiantes, versátil y de fácil mantenimiento.

No se pierda el siguiente segmento: suscríbase a mi lista de correo para


mantenerse actualizado. Y si se queda atascado en algún lugar del camino,
no dude en comunicarse conmigo para obtener ayuda, estaré feliz de ayudar
de cualquier manera que pueda.

Prefacio
En este segmento, aprenderá cómo poner en marcha una aplicación web
utilizando algunas de las mejores prácticas y metodologías en su host Proxmox
VE.

Proxmox proporciona algunas funciones de firewall realmente excelentes,


desafortunadamente no ofrecen las opciones de configuración que necesitamos
para DHCP, DNS y NAT, por lo que usaremos pfSense para manejarlas.

Comencemos con NAT (traducción de direcciones de red) y por qué lo


usaremos; desea mantener su red doméstica y la red de su laboratorio separadas
por una larga lista de razones, a saber, la seguridad. La forma más fácil de hacer
esto sin comprar más hardware es mantener la red del laboratorio contenida
dentro de su host de virtualización (Proxmox), que tiene sus ventajas y
desventajas en comparación con una red doméstica personalizada, dicho esto, la
red es un componente crucial del laboratorio doméstico y Absolutamente
llegaremos a eso a su debido tiempo.
NAT es el proceso de barajar el tráfico del protocolo de Internet de varios hosts a
través de una única dirección IP de puerta de enlace, tal como lo hace el enrutador
de su hogar de forma predeterminada. Básicamente, cualquier host detrás de la
puerta de enlace NAT envía sus solicitudes salientes a la puerta de enlace, que
reenvía ese tráfico a su destino y realiza un seguimiento de qué host privado hizo
la solicitud, cuando una respuesta regresa, la puerta de enlace reenvía ese tráfico
al host original.

Nota: ¡NAT por sí solo NO es seguridad! Un hacker astuto puede eludir NAT, por
eso usaremos pfSense para agregar un firewall a la red del laboratorio privado.

Utilizaremos las funciones de DHCP y DNS proporcionadas por pfSense en


artículos futuros para administrar nuestros invitados de VM en la red privada en
lugar de asignarles direcciones IP estáticas. La ventaja de este enfoque es que
cuando tiene que hacer cambios, por ejemplo, configura una nueva versión de
alguna aplicación y está listo para cambiarla a producción, es tan fácil como
cambiar la configuración en pfSense en lugar de entrar en todas los hosts
relevantes y cambiando sus direcciones IP estáticas.

Nota: Las reglas del firewall para proteger su red doméstica de la red de su
laboratorio se cubrirán en un artículo futuro, esta configuración por sí sola no es
segura para hospedarse en Internet abierta, llegaremos pronto, mientras tanto
diviértase con el viaje ¡y juega mientras aún puedes romper cosas con
consecuencias mínimas!

Obtener pfSense
Diríjase a la página de descarga de pfSense y obtenga la última versión, querrá la
arquitectura AMD64 y el instalador de imagen de CD.
Necesitará tener algún software instalado para extraer el archivo, yo uso 7-zip
para esto porque agrega una buena opción de menú contextual en Windows.

Una vez que lo tenga en .isoformato, puede cargarlo en su host Proxmox.


Configurar la red de VM

Antes de configurar la VM, necesitaremos una red interna privada en el host


Proxmox. Dirígete a Centro de datos> (Nombre de tu host)> Red y haz clic en
Crear> Puente Linux.

Debe reiniciar el host Proxmox antes de continuar para que la nueva red esté
disponible para que pfSense la use.

Relacionados Cómo hacer el laboratorio en casa: Parte 4 - Proxy inverso NGINX


Configurar una máquina virtual pfSense

Cree una nueva máquina virtual, si marca la casilla avanzada en la parte inferior,
tendrá la opción de configurar la configuración de inicio automático:

 Iniciar en el arranque: inicie automáticamente esta máquina virtual cuando


se inicie el host Proxmox
 Orden de inicio / apagado: en el momento del inicio, las máquinas virtuales
con números más bajos se iniciarán primero y, al apagar o reiniciar, las
máquinas virtuales con números más altos se apagarán primero. Me gusta
comenzar estos en incrementos de 10 para que pueda introducir nuevas
VM donde sea que deban ir más tarde, tampoco hay nada de malo en usar
el mismo número para varias VM, simplemente se iniciarán / apagarán al
mismo tiempo.
 retraso de inicio: la cantidad de segundos que se esperará después de
iniciar esta máquina virtual antes de iniciar la siguiente máquina virtual.
 Tiempo de espera de apagado: la cantidad de segundos que se debe
esperar durante un apagado del host Proxmox para que esta máquina
virtual termine de apagarse, esto evita que el sistema se cuelgue si una
máquina virtual se niega a apagarse, generalmente lo dejo en blanco para
usar la configuración predeterminada de 5 minutos.

Solo necesita agregar un comentario para esta red, toda la configuración de IP


será manejada por pfSense una vez que la hagamos funcionar.
En la pestaña SO, elija la imagen ISO para pfSense y elija "otro" para el sistema
operativo invitado.
Acepte la configuración predeterminada para la pestaña Sistema, en la pestaña
Disco duro cambie Bus / Dispositivo a Bloque VirtIO.

Siempre marque la casilla para discard, esto liberará espacio de los archivos
eliminados en el invitado de la VM, si no está marcada, el espacio libre estará
disponible para el invitado de la VM, pero seguirá marcado como usado en el
dispositivo de almacenamiento y host Proxmox
En la pestaña CPU, configure los núcleos de CPU para esta VM, 1 o 2 deberían
estar bien, y configure las unidades de CPU en 2048. Las unidades de CPU le dan
a cada VM una prioridad para el tiempo de CPU, por lo que las VM que son menos
críticas pueden usar el valor predeterminado valor de 1024, y las máquinas
virtuales críticas deberían obtener un valor más alto para que tengan prioridad si
hay una gran demanda de uso de la CPU.
Para la memoria, 512MiB debería estar bien, siempre puede agregar más más
tarde si es necesario.

En la pestaña Red, elija VirtIO para el Modelo y deje el Puente en vmbr0,


agregaremos la nueva red después de que finalice el asistente.
Finalice el asistente de configuración, luego diríjase a Centro de datos> (Nombre
de su host)> pfSense> Hardware> Agregar> Dispositivo de red.
Elija vmbr1 para el puente (nuestra red privada interna) y VirtIO para el modelo.

Instalar pfSense

Haga clic en el botón de inicio en la barra de menú superior, y luego haga clic en
la pestaña de la consola a la izquierda para ejecutar el instalador de pfSense, las
opciones de instalación predeterminadas deberían estar bien.
Después de reiniciar la máquina virtual, se le pedirá la siguiente entrada antes de
que se complete el inicio:

 ¿Deberían configurarse las VLAN ahora? (n para no)


 Ingrese a la interfaz WAN: (vtnet0)
 Ingrese a la interfaz LAN: (vtnet1)
Configurar pfSense

Una vez finalizado el arranque, elija la opción 8 y presione Intro para abrir una
sesión de shell.
Necesitamos deshabilitar el filtro de paquetes (firewall) temporalmente para que
podamos acceder a la interfaz web desde el lado WAN que está deshabilitado de
manera predeterminada, use el comando pfctl -dpara lograr esto y observe la
dirección IP de la interfaz WAN que se muestra arriba de las opciones del menú. lo
necesitará en el siguiente paso.

Nota: Es posible que se bloquee varias veces durante la configuración antes de


que agreguemos una regla para permitir el tráfico, porque al cambiar ciertas
configuraciones se recargará el filtro de paquetes y, por lo tanto, se volverá a
activar, simplemente regrese a la consola en Proxmox y ejecute el pfctl -
dcomando de nuevo.
Desde un navegador web, visite https://(IP address of pfSense), en mi
caso https://10.128.0.26, será recibido con la página del Certificado SSL no
válido, elija Avanzado> Aceptar el riesgo y continuar, o vaya al sitio web según el
navegador que esté utilizando. Luego inicie sesión con las credenciales
predeterminadas:

Nombre de usuario: admin Contraseña:pfsense


Haga clic en las primeras páginas y luego elija un nombre de host, dominio y
servidores DNS. Puede usar el mismo dominio que su host Proxmox o uno nuevo,
y cualquier servidor DNS público que desee.

El servidor de hora predeterminado está bien, sin embargo, asegúrese de obtener


su zona horaria correcta.

Configure la interfaz WAN con una dirección IP estática dentro de la subred de su


red doméstica pero fuera del rango DHCP al igual que su host Proxmox, haga
coincidir la máscara de subred y la puerta de enlace ascendente con la
configuración de su red doméstica y haga clic en Siguiente en la parte inferior de
la página, puede consulte mi artículo Introducción a las redes si no está seguro de
qué utilizar para la configuración de red aquí y en adelante.

A continuación, configure la dirección IP de LAN y la máscara de subred para


pfSense, esto es para el lado de la red interna privada, por lo que debería ser un
nuevo rango de red privada que aún no existe dentro de su red doméstica, fui
con 172.16.44.1/24.

Primero configuremos un alias para los puertos de administración que usa


pfSense, de esta manera podemos asignar una regla a todos los puertos a la vez
en lugar de hacer una nueva regla para cada puerto, estamos agregando un
puerto 8080a este alias porque estamos vamos a mover la interfaz de
administración a ese puerto para que podamos liberar los puertos 80 y 443 para el
tráfico web regular detrás de NAT.

Dirígete a Firewall> Alias> Puertos> Agregar


Puede cambiar el nombre y los valores de descripción aquí a su gusto, incluso
puede dejar la descripción de cada puerto en blanco, solo recuerde el nombre del
alias porque lo usaremos pronto.

Ahora dirígete a Firewall> Reglas> WAN> Agregar

Nota: Las reglas de firewall en pfSense se aplican al tráfico que ingresa a la


interfaz en la que están configurados, no se aplican al tráfico que sale de esa
interfaz, así que téngalo en cuenta. En nuestro caso de uso, la interfaz WAN es su
red doméstica y la interfaz LAN es su red de servidor privado a la que solo se
podrá acceder desde máquinas virtuales o mediante el firewall pfSense.
Queremos agregar una regla para permitir el acceso desde su red doméstica a la
interfaz de administración del firewall pfSense, aquí están las configuraciones que
necesitamos para lograr ese objetivo:

 Acción: Pasar
 Deshabilitado: sin marcar
 Interfaz: WAN
 Familia de direcciones: IPv4
 Protocolo: TCP
 Fuente
o Red: de donde vendrá el tráfico permitido, esta debería ser su red
doméstica.
 Destino
o Destino: este cortafuegos (propio)
o Rango de puerto de destino
 De: pfSense_Admin_Ports (el alias que creamos
anteriormente)
 Para: pfSense_Admin_Ports (el alias que creamos
anteriormente)
 Opciones extra
o Descripción: Esto es solo para ayudarlo a identificar reglas, es útil
cuando tiene una lista larga de reglas en una interfaz.
Para el resto de este artículo, cuando vea este mensaje después de cambiar algo,
siga adelante y haga clic en Aplicar cambios, se muestra porque hay algunos
casos en los que es posible que deba cambiar varias configuraciones antes de
aplicar para que todos los cambios se apliquen a la vez. pero hoy no estamos
haciendo nada parecido.

A continuación, vaya a Interfaces> WAN y desmarque las dos casillas en la parte


inferior para "Bloquear redes privadas y direcciones de bucle invertido" y "Bloquear
redes bogon", guarde y aplique (Queremos permitir que nuestra red privada local
acceda a la interfaz WAN ).

Ahora debería poder volver a activar el filtro de paquetes y seguir accediendo a la


página de administración de pfSense, así que de vuelta en su sesión de consola
en Proxmox, ejecute el comando pfctl -epara habilitar el firewall nuevamente.

Eliminemos esta advertencia sobre el cambio de contraseña muy rápido, siga


adelante y haga clic en "Cambiar la contraseña ..."

Ya conoce el ejercicio, ingrese una nueva contraseña dos veces y haga clic en
guardar en la parte inferior de la página.

pfSense recomienda deshabilitar la configuración de descarga de recepción


grande (LRO) cuando se está ejecutando en una máquina virtual (si la interfaz de
administración se siente lenta, esto también debería ayudar), diríjase a Sistema>
Avanzado> Redes, marque la casilla "Deshabilitar descarga de recepción grande
de hardware" y haga clic en guardar.
Como mencioné, debemos mover la interfaz de administración al puerto 8080,
diríjase a Sistema> Avanzado> Acceso de administrador.

Cambie el valor "Puerto TCP" en "webConfigurator" a 8080y haga clic en guardar


en la parte inferior de la página. Debería redirigirlo al nuevo puerto
automáticamente después de un breve retraso para que se aplique la
configuración. Si no lo hace, simplemente escriba manualmente en la barra de
URL de su navegador https://(IP address):8080.
Configurar una máquina virtual de Template Server
Si aún no tiene una imagen ISO para el servidor Ubuntu, continúe y obtenga la
última versión de su página de descarga y cárguela en su host Proxmox.

Usted es libre de usar cualquier distribución de sistema operativo que elija, yo uso
Ubuntu aquí porque es una opción popular y hay muchos recursos disponibles
para ayudar si los necesita.

Voy a mostrarle cómo usar una plantilla de VM, esencialmente instalará un


sistema operativo y cualquier software adicional que desee tener en él qemu-
guest-agent(explicado más adelante), luego convertirá la VM en una
plantilla. Cuando clona la plantilla en una nueva máquina virtual, puede omitir toda
esa configuración. Hay algunos beneficios y desventajas de este enfoque, así que
no dude en omitir este paso si así lo desea (pero instale qemu-guest-agenten
todas las máquinas virtuales que pueda). Otra opción es usar una plantilla de VM
sin convertirla en una plantilla, perderá la capacidad de crear un clon vinculado y
todos los beneficios que vienen con esa función, pero podrá realizar cambios e
instalar actualizaciones en la plantilla. ya que los clones no están vinculados.

 Beneficios de los clones enlazados


o Ahorre espacio en disco: los archivos del sistema operativo base no
se copian en el clon, sino que se leen de la plantilla, si se cambian
en un clon, se hará una nueva copia solo para ese clon
 Ahorre en el uso de RAM: Kernel Same-page Merging (KSM)
funciona mejor cuando hay más recursos comunes
compartidos entre VM (más sobre KSM en mi artículo
de Ajuste de memoria de ZFS )
 Inconvenientes de los clones enlazados
o Las plantillas no se pueden eliminar ni modificar si existen clones,
por lo que no puede instalar actualizaciones o agregar
configuraciones a la plantilla para clones futuros, tendría que crear
una nueva plantilla, esto puede llevar a que muchas plantillas
abarroten su lista de VM como SO salen lanzamientos y crece tu
preconfiguración
 KSM puede aumentar la superficie de ataque para ataques de
memoria de canal lateral

Agregue una nueva máquina virtual, aquí están las configuraciones que usé:

 General
o ID de VM: 1001 (me gusta mantener las plantillas al final de la lista
de VM)
o Nombre: Ubuntu-18.04.3-20190824 (también me gusta poner la
fecha de creación en el nombre de la VM)
 SO
o CD ISO: ubuntu-18.04.3
o SO invitado: Linux / 5.x
 Sistema
o Defaults
 Disco duro
o Tamaño: 8 GiB (incluso podría bajar a 4 GiB, se puede agregar más
espacio a los clones si es necesario)
o Descartar: marcado (siempre marque esta casilla como se explicó
anteriormente)
 UPC
o Núcleos: 2 (esto se puede cambiar en los clones según sea
necesario)
 Memoria
o MiB: 512 (esto también se puede cambiar en los clones)
 La red
o Puente: vmbr1 ( use la red privada de VM )

Ejecute el instalador como de costumbre, asegurándose de que cuando llegue a


las conexiones de red, se asigne una dirección DHCP en el rango de red que
configuró para la red LAN en pfSense, si no es correcto aquí, algo salió mal (¿es
usted uno la vmbr1red?).

También elegí Use an entire disk and set up LVMdurante la instalación, esto
hace que agregar espacio en disco más adelante sea mucho más fácil.
Cuando se le solicite, elimine los medios de instalación de la máquina virtual.

Después del reinicio, abra una consola en la nueva máquina virtual y ejecute los
siguientes comandos para instalar todas las actualizaciones de software
disponibles.

sudo apt update


sudo apt -y dist-upgrade

Solución de problemas:

Recibí un montón de errores cuando ejecuté el comando de actualización, no


estoy del todo seguro si se debió a la ejecución de pfSense en una máquina
virtual, o debido a NAT doble (mi laboratorio pfSense se está ejecutando detrás de
mi firewall pfSense de producción).

Si obtiene errores aquí como lo hice yo, intente ejecutar el comando ping
google.com, si obtiene respuestas, intente el comando curl -I google.com, si eso
falla pero el comando ping funciona bien, regrese a su página de administración
de pfSense y diríjase a Sistema> Avanzado> Redes, verifique el cuadro Disable
hardware checksum offloady haga clic en guardar, esto me puso en
funcionamiento.

En su plantilla de sesión de consola de VM en Proxmox, ejecute el comando sudo


apt install -y qemu-guest-agent, este agente ayuda al host de Proxmox a
comunicarse con el invitado de VM y permite que el host ejecute comandos en el
invitado, por ejemplo, ejecutando el comando de apagado (si usa el botón de
apagado en Proxmox en una máquina virtual sin el agente invitado, Proxmox
simplemente le dice a la máquina virtual que se ha presionado el botón de
encendido, pero ejecutar el comando de apagado con el agente invitado es mucho
más limpio y confiable). Cuando finalice la instalación, continúe y apague la
máquina virtual.

Necesitamos decirle a Proxmox que el agente invitado está instalado en esta


máquina virtual, diríjase a (Nombre de la máquina virtual)> Opciones y haga doble
clic en Agente Qemu, marque ambas casillas y haga clic en Aceptar.

Ejecutar guest-trim después de clonar un disco marcará el espacio libre en el disco


virtual como libre en el dispositivo de almacenamiento, este es el comportamiento
generalmente deseado .
Por último, haga clic con el botón derecho en el nombre de su plantilla VM y
elija convert to template.

Relacionados Cómo hacer el laboratorio en casa: Parte 7 - Gestión de registros

Crear una máquina virtual de servidor web


Haga clic con el botón derecho en su plantilla VM y elija Clonar.
Elija un nombre para la nueva máquina virtual y use el clon vinculado para el
modo.

Dirígete a (Nombre de tu VM)> Opciones, y haz doble clic en Iniciar al arrancar,


elige 20 para el orden para que se inicie solo después de que pfSense haya
arrancado, luego haz doble clic en Iniciar al arrancar y marca la casilla para sí.
En la pestaña Hardware, haga doble clic en Dispositivo de red y copie la dirección
MAC. Puede pegarlo en el bloc de notas por ahora, lo necesitaremos más
adelante para configurar una reserva DHCP.

Una dirección MAC (Media Access Control) es un identificador único asignado a


cada interfaz de red en una máquina.
Inicie la máquina virtual y cambie a la consola hasta que llegue al indicador de
inicio de sesión, luego cambie a la pestaña Resumen, debería ver una dirección IP
en la lista que se encuentra dentro del rango de red de la interfaz LAN en pfSense,
si ve la dirección que significa el qemu-guest-agentestá instalado y funcionando
correctamente, ¡bueno!

Regrese a la consola para el siguiente paso.


Calderería

Cada vez que clona una máquina virtual, debe ejecutar los siguientes comandos
para asegurarse de que el nuevo sistema se vea como una máquina única en la
red y mantener cierta entropía para SSH si está instalado (también debe recibir
una dirección MAC única para todas las interfaces de red cuando ejecuta la
operación de clonación). Todos los comandos a continuación deben ejecutarse
como usuario root, esto se puede lograr en Ubuntu precediendo cada comando
con sudo, o ejecutando primero el comando sudo -ipara iniciar una sesión de root.

Estos comandos son específicos de Ubuntu, consulte la documentación de su


distribución si no está usando Ubuntu. Lo que estamos haciendo es eliminar
el machine-idde ambas ubicaciones /etc/y /var/lib/dbus, crear un
nuevo machine-iden /etc/y vincularlo simbólicamente a /var/lib/dbus.

rm -f /var/lib/dbus/machine-id
rm -f /etc/machine-id
dbus-uuidgen --ensure=/etc/machine-id
ln -s /etc/machine-id /var/lib/dbus/

Estos comandos solo son necesarios si SSH está instalado; si fallan,


probablemente no esté instalado y puede omitirlos con seguridad.

ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa -y


ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N '' -t dsa -y
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N '' -t ecdsa -b 521 -y

Nota: Las versiones más recientes de Ubuntu se han cloud-inithabilitado de


forma predeterminada, lo que puede interferir con los cambios de nombre de
host. En mi opinión, cloud-inittiene un gran potencial, pero aún no está listo para
el horario de máxima audiencia. Recomiendo ejecutar el comando sudo touch
/etc/cloud/cloud-init.disabledpara deshabilitarlo por el momento.

Estos comandos cambian el nombre de host y todas las referencias a él, lo


reemplazan ubuntu-18-04-3con el nombre de host de su plantilla de VM
y nginxcon el nombre de host deseado de su nueva VM.

sed -i 's/ubuntu-18-04-3/nginx/g' /etc/hosts


sed -i 's/ubuntu-18-04-3/nginx/g' /etc/hostname
hostnamectl set-hostname nginx

La máquina virtual debe reiniciarse para completar los cambios, pero esperemos
por ahora, ya que tendremos que reiniciar después de configurar la reserva DHCP
en pfSense.

Instalar NGINX

Ejecute el comando sudo apt install -y nginx, NGINX se envía con una página
de destino simple por defecto para hacerle saber que está funcionando, así que
eso es todo lo que hay para este paso.

Reserva DHCP
Asignar una reserva de DHCP significa que cuando el host configurado se inicia y
solicita una dirección IP del servidor DHCP (en pfSense), se le dará la dirección
especificada en lugar de obtener una dirección del grupo DHCP que puede no ser
siempre la misma en el siguiente reinicio (el grupo de DHCP es un rango de
direcciones IP que se entregarán automáticamente a los nuevos hosts).

Desde la interfaz de administración de pfSense, vaya a Servicios> Servidor DHCP.


Antes de que podamos asignar una reserva, necesitamos cambiar el tamaño del
grupo de direcciones, pfSense no le permitirá reservar una dirección que esté
dentro del grupo DHCP. Cambie los valores de Rango en Opciones generales
para dejar algunas direcciones abiertas para reservas, cambié mi rango
de 172.16.44.1 - 172.16.44.254a 172.16.44.1 - 172.16.44.100, dejando el
rango 172.16.44.101 - 172.16.44.254para asignaciones de reserva.
En la parte inferior, haga clic en el botón Agregar debajo de Asignaciones
estáticas de DHCP.

Pegue la dirección MAC para su VM NGINX que copió anteriormente,


normalmente uso el nombre de host como identificador de cliente (solo haga que
el identificador de cliente sea único para cada host en la red).

Elija una dirección IP fuera del grupo DHCP y agregue una descripción opcional,
luego guarde y aplique los cambios.
Relacionados How to Home Lab: Parte 8 - Introducción a Docker: instalación y
uso.

Configurar el reenvío de puertos


Agreguemos un nuevo alias para el servidor NGINX, me gusta usar alias siempre
que sea posible porque hace que sea más fácil cambiar las cosas más adelante, la
actualización de un alias actualizará todas las reglas de NAT y Firewall asociadas
junto con él.

Dirígete a Firewall> Alias> IP y haz clic en el botón Agregar.

Asegúrese de usar su propia dirección IP aquí en lugar de la mía


También agreguemos un alias para los puertos web (80 y 443), haga clic en la
pestaña Puertos y luego en el botón Agregar.

Ahora diríjase a Firewall> NAT> Port Forward y haga clic en el botón Agregar.
Para la regla de reenvío de puertos, elija estas opciones:

 Interfaz: WAN (reenviar solicitudes a este puerto provenientes de la interfaz


WAN, que es su red doméstica)
 Protocolo: TCP
 Destino: dirección WAN (solicitudes de reenvío destinadas a la dirección IP
de pfSense en su red doméstica)
 Rango de puerto de destino:
o From / To: Web_Ports (el alias que acabamos de crear)
 Redirigir la IP de destino: nginx (el alias del servidor NGINX)
 Redirigir puerto de destino: Web_Ports (alias)
 Descripción (opcional): reenviar el tráfico HTTP (S) al servidor NGINX

Haga clic en guardar y aplique los cambios.


De vuelta en su sesión de consola en la interfaz web de Proxmox, reinicie la VM
NGINX para aplicar todos los cambios, debería obtener la nueva dirección IP
reservada de DHCP cuando se inicie nuevamente (puede usar el
comando reboot).

Después de uno o dos minutos, coloque la dirección IP de su firewall pfSense en


la barra de URL de su navegador web ( http://(IP address)) sin el :8080, porque
ese puerto es para la interfaz de administración de pfSense, y sin
el sin httpporque no configuramos SSL en el NGINX servidor todavía. Debería ver
la página NGINX predeterminada, lo que significa que su NAT Port Forward está
funcionando como se esperaba.

En caso de que aún no lo supiera, cuando visita una página web http://en su
navegador, la solicitud va al puerto 80 usando el protocolo HTTP (tráfico no
encriptado), e https://irá al puerto 443 y usará el protocolo HTTPS (encriptado),
agregar dos puntos después de la dirección establecerá manualmente el puerto de
destino, pero el protocolo aún se selecciona por la presencia o ausencia de la
letra sposterior http.

Sirva una aplicación en NGINX


Si tiene la intención de jugar con esto mientras trabajo en el siguiente segmento
de esta serie (¡y debería hacerlo!), Es posible que desee realizar una copia de
seguridad o una instantánea de la VM NGINX para que podamos restaurarla a un
estado limpio más adelante cuando lo configuramos como un proxy inverso.

Pongamos algo útil en nuestro servidor NGINX solo por diversión, elegí
una aplicación de mapas mentales solo porque es muy fácil de instalar, pero
siéntete libre de probar otras cosas y experimentar.

Regrese a la consola del servidor NGINX en su host Proxmox, ejecute los


siguientes comandos como root para descargar el proyecto en
el /var/www/htmldirectorio predeterminado y establezca los permisos correctos en
los nuevos archivos.

Aquí está una gran explicación de los permisos de archivos de linux de linux.com

apt isntall -y git


cd /var/www
rm -rf html
git clone https://github.com/ondras/my-mind.git html
chown -R www-data. /var/www/html
find /var/www/html/ -type d -exec chmod 755 {} \;
find /var/www/html/ -type f -exec chmod 644 {} \;

Ahora apunte su navegador a la dirección IP WAN de su firewall pfSense


( http://(IP address)), y debería ver la aplicación de mapa mental en ejecución.

Cómo hacer el laboratorio en casa:


Parte 4 - Proxy inverso NGINX
 NGINX
 Cómo hacer la serie de laboratorio en casa
 Laboratorio casero
 Redes
 Proxmox

10 de septiembre de 2019 (actualizado el 2 de noviembre de 2019)

Tabla de contenido
 Prefacio
 Configurar un punto final web
o Crea una nueva VM
o Instalar dependencias
o Agregar espacio en disco
o Aprovisionar aplicación web
o Reserva DHCP
 Configurar proxy inverso
o 4t-app.conf
 Míralo en acción

Mantén la calma y pásalo


Si encuentra esto útil, considere compartirlo en las redes sociales para ayudar a correr la voz.

La intención de esta serie es poner en marcha a los nuevos trabajadores


domésticos con un laboratorio doméstico versátil, fácil de mantener y fácil de
mantener, y equiparlos con el conocimiento para administrar y utilizar con
confianza sus sistemas, y eventualmente trabajar hasta el hogar avanzado. redes,
sistemas de alta disponibilidad (HA), redes de área de almacenamiento (SAN),
servidores de correo electrónico y más.

Cómo hacer la serie de laboratorio en casa


Una serie de tutoriales sobre cómo construir un sistema completo de laboratorio en casa desde cero que
sea fácil de usar para principiantes, versátil y de fácil mantenimiento.
No se pierda el siguiente segmento: suscríbase a mi lista de correo para
mantenerse actualizado. Y si se queda atascado en algún lugar del camino,
no dude en comunicarse conmigo para obtener ayuda, estaré feliz de ayudar
de cualquier manera que pueda.

Prefacio
En este segmento, aprenderá a configurar un proxy inverso NGINX, agregar
espacio en disco VM y administrar aplicaciones NodeJS con pm2. Voy a configurar
una instancia de la aplicación '4t' que armé en React, que es un temporizador de
20, 20, 20 para la salud ocular que uso todo el tiempo, pero puedes configurar
cualquier back-end. anfitrión que desee.

Configurar un punto final web


Crea una nueva VM

Lo primero que debemos hacer es configurar una aplicación web en una nueva
VM para el tráfico de proxy, así que clonemos nuestra plantilla nuevamente.

Utilice un clon vinculado y elija un nombre para esta máquina virtual.


Continúe e inicie la nueva máquina virtual.

Deberá seguir los pasos estándar de la parte 3 para establecer un nombre de host
único y darle a la nueva VM algo de entropía.

Relacionados Cómo hacer el laboratorio en casa: Parte 3 - Alojar un sitio de


intranet con pfSense y NAT

Instalar dependencias

Instalemos nuestro paquete de software (NodeJS, PM2), ejecutemos los


siguientes comandos en una sesión de consola en la nueva VM.
PM2 es un administrador de procesos para aplicaciones NodeJS, se encargará de
iniciarlas en el momento del arranque y reiniciará cualquier proceso que se
bloquee.

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -


sudo apt dist-upgrade -y
sudo apt install -y nodejs git
npm install -g pm2

Ahora nos encontraremos con un problema, ¡estamos casi sin espacio en disco en
esta máquina virtual!

Agregar espacio en disco

También podría cambiar el tamaño del disco duro existente en la mayoría de los
casos, pero quiero demostrar el poder y la flexibilidad de LVM aquí, así que
agregaré un nuevo disco y combinaré los dos.

Dirígete a Centro de datos> (Nombre de tu host)> (Nombre de tu VM)> Hardware>


Agregar> Disco duro.
De vuelta en la Consola VM, ejecute el comando lsblkpara listar los dispositivos
de bloque y verá el nuevo disco sdbdisponible.
Los siguientes comandos aprovisionarán el nuevo disco como un volumen físico
LVM (PV), extenderán el grupo de volúmenes (VG) existente para abarcar tanto el
disco nuevo como el viejo, y luego expandirán el volumen lógico (LV) en el que
está instalado el sistema operativo en su tamaño máximo disponible.

Primero necesitamos conocer los nombres existentes de VG y LV, podemos


descubrirlos con los comandos sudo vgs, y sudo lvs, respectivamente. En mi
caso, el VG es el nombre ubuntu-vgy el LV es el nombre ubuntu-lv.

sudo pvcreate /dev/sdb


sudo vgextend ubuntu-vg /dev/sdb
sudo lvextend ubuntu-vg/ubuntu-lv -l+100%FREE
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
reboot

Dado que el sistema operativo se ejecuta en el LV que ampliamos, tendrá que


reiniciarse para reflejar los cambios. Por lo general, solo agrego un nuevo disco
para los datos de la aplicación si es necesario y lo mantengo separado del disco
del sistema operativo para evitar esto, pero ahora ha visto una muestra del
conjunto de características de LVM.

Después del reinicio, podemos ver que el dispositivo de bloque montado como /,
que es nuestro LV, ha aumentado a 11GiB de tamaño.
Aprovisionar aplicación web

Ahora tomemos el código fuente de mi aplicación 4t y configurémoslo.

git clone https://github.com/dlford/4t.git


cd 4t
npm install

Tendremos que cambiar el homepagevalor en el package.jsonarchivo


a http://127.0.0.1porque está configurado de manera predeterminada para
implementarse en las páginas de GitHub, y esa configuración no funcionará en
nuestro caso.

nano package.json

Ahora que arreglamos eso, podemos construir la aplicación.


npm run build

Escribiremos un script rápido para que la aplicación se ejecute con


el servepaquete de NPM.

touch startup.sh
chmod +x startup.sh
nano startup.sh
npx serve --single --no-clipboard build

Ahora comencemos ese script con PM2.

pm2 start startup.sh --name 4t-app --watch

PM2 debe configurarse para iniciarse en el momento del arranque, ejecute el


comando pm2 startupy PM2 emitirá un comando para que lo ejecute para hacer
esto, así que continúe y vuelva a escribirlo en la consola como se muestra.

Por último, guarde la configuración en ejecución para PM2 con el comando pm2
save.

Reserva DHCP

Siga los pasos de reserva DHCP de la parte 3 .

No olvide reiniciar la nueva máquina virtual después de configurar la reserva


DHCP para que adquiera la nueva dirección IP.
Relacionados How to Home Lab: Parte 8 - Introducción a Docker: instalación y
uso.

Configurar proxy inverso


Desde una sesión de consola en su VM NGINX, creemos un archivo de
configuración para el nuevo proxy inverso.

sudo nano /etc/nginx/sites-available/4t-app.conf

4t-app.conf
server {
listen 80;
server_name 4t.burns.lab;
location / {
proxy_read_timeout 36000s;
proxy_http_version 1.1;
proxy_buffering off;
client_max_body_size 0;
proxy_redirect off;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_hide_header X-Powered-By;
proxy_pass_header Authorization;
proxy_pass http://172.16.44.102:5000;
}
}

Tenga en cuenta que no todas las opciones son necesarias para todas las
circunstancias, para este caso de uso en particular podríamos haber omitido la
mayoría de ellas, y hay muchas otras que tampoco he enumerado aquí. Guardo
todas estas opciones en todas mis configuraciones solo para no tener que
buscarlas cuando las necesito, simplemente copio una configuración existente y la
edito para el nuevo servidor back-end. Esto es lo que hacen:

 server: Designa que este bloque de configuración es para un servidor, no


tiene nada que ver con el proxy
 listen 80: Escuche en el puerto 80 para el tráfico HTTP
 server_name 4t.burns.lab: Esta configuración se aplica solo a las
solicitudes del nombre de host 4t.burns.lab, asegúrese de cambiar esto a
su propio host
 location /: Un bloque de ubicación se aplica a una URL específica, es
recursivo, lo /page1que significa que aún coincidiría con el bloque de
ubicación para /, a menos que location /page1también se especifique en
el archivo.
 proxy_read_timeout 36000s: cuánto tiempo esperar antes de dejar de
conectarse al servidor back-end
 proxy_http_version 1.1: Utilice el protocolo HTTP versión 1.1, esto es
necesario cuando el proxy NGINX sirve HTTP versión 2 pero el servidor de
fondo solo admite la versión 1.1
 proxy_buffering off: No espere a recibir la respuesta completa del back-
end, envíe la respuesta como una transmisión en tiempo real
 client_max_body_size 0: Establece el tamaño máximo del cuerpo de una
solicitud, 0 está deshabilitado para permitir cualquier tamaño
 proxy_redirect off: Está desactivado de forma predeterminada, pero se
puede utilizar para reescribir URL
 proxy_set_header Connection "": Sobrescribe el Connectionencabezado
de una solicitud a un valor vacío, esto evita que la solicitud cierre una
conexión manualmente, lo que interrumpirá el mantenimiento en el host de
back-end si se usa.
 proxy_set_header Host $host: Utilice el encabezado de host de la solicitud
cuando se comunique con el servidor de back-end, necesario si el host de
back-end también ofrece contenido diferente según el nombre de host en la
solicitud
 proxy_set_header X-Real-IP $remote_addr: El host de back-end registrará
la solicitud como proveniente de la dirección IP de los proxies inversos,
el X-Real-IPencabezado se utiliza para determinar la fuente real de la
solicitud
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for: Igual
que el anterior pero con un nombre de encabezado diferente
 proxy_set_header X-Forwarded-Host $host: Igual que el anterior, otro
nombre de encabezado
 proxy_set_header X-Forwarded-Proto $sheme: Informe al host de back-end
si la solicitud original llegó a través de HTTP o HTTPS
 proxy_hide_header X-Powered-By: Oculta el nombre del servicio y la
información de la versión del servidor back-end
 proxy_pass_header Authorization: Pase cualquier dato de autorización
básica HTTP al servidor back-end, que es un método muy simple para
proteger con contraseña un sitio web, todavía se usa a veces, pero existen
mejores métodos en la actualidad.
 proxy_pass http://172.16.44.102:5000: Esta debe ser la dirección IP
interna y el puerto del host de back-end que recibirá solicitudes de proxy.

Ahora necesitamos sites-enabledvincular simbólicamente el archivo de


configuración al directorio donde NGINX busca los archivos de configuración
activos.

sudo ln -s /etc/nginx/sites-available/4t-app.conf /etc/nginx/sites-


enabled/

Debe probar la configuración con el comando sudo nginx -t, si vuelve con éxito,
continúe y reinicie NGINX con el comando sudo service nginx restart.

Míralo en acción
Aquí es donde realmente comenzamos a ver el inconveniente de ejecutar una red
privada interna en Proxmox sobre una solución de red doméstica personalizada
(abordaremos esto en un segmento futuro). Si lo visita http://(IP address of
your pfSense VM), obtendrá el sitio predeterminado que se ejecuta en el servidor
NGINX y no el sitio con proxy inverso, porque necesitamos que el encabezado del
host coincida con el archivo de configuración para el sitio con proxy
( 4t.burns.laben mi ejemplo anterior).

Deberá utilizar el hostsarchivo en su estación de trabajo para probar esto,


el hostsarchivo es esencialmente una anulación de DNS, ingresa una dirección IP
y un nombre de host, y cualquier comunicación con ese nombre de host irá a la
dirección IP en el hostsarchivo en lugar de la dirección IP que devolvería una
búsqueda de DNS.

La sintaxis es simple, solo la dirección IP de su VM pfSense, uno o más espacios,


y el nombre de host que configuró en el archivo de configuración NGINX. En mi
ejemplo, esto es 10.128.0.27 4t.burns.lab. Querrá agregar esa línea al final
del hostsarchivo en su estación de trabajo, que deberá editar como administrador.

 Ventanas: C:\Windows\System32\drivers\etc\hosts
 Linux / Mac: /etc/hosts

Después de ese cambio, desplácese http://(hostname)en la barra de URL de su


navegador (por ejemplo http://4t.burns.lab), y debería ver la aplicación 4t
ejecutándose detrás de su proxy inverso NGINX, que se ejecuta detrás de su VM
pfSense, que se ejecuta en su host Proxmox.
Cómo hacer el laboratorio en casa:
Parte 5 - Acceso remoto SSH seguro
 SSH
 Cómo hacer la serie de laboratorio en casa
 Proxmox
 Laboratorio casero

1 de octubre de 2019 (actualizado el 20 de octubre de 2019)

Tabla de contenido
 Prefacio
 Configurar una máquina virtual de punto de acceso
o Redes
o Calderería
o Configuración SSH
 Pares de claves SSH
o Crear un par de claves
o Administrar el acceso a la clave SSH
 Asegure el servidor SSH
o Más configuración SSH
o Configurar Fail2Ban
 Pruebe su configuración
 Acceder a otros hosts
 Consejos y trucos
o TMUX
o Comandos rápidos
o Transferir archivos
o Túneles

Mantén la calma y pásalo


Si encuentra esto útil, considere compartirlo en las redes sociales para ayudar a correr la voz.

La intención de esta serie es poner en marcha a los nuevos trabajadores


domésticos con un laboratorio doméstico versátil, fácil de mantener y fácil de
mantener, y equiparlos con el conocimiento para administrar y utilizar con
confianza sus sistemas, y eventualmente trabajar hasta el hogar avanzado. redes,
sistemas de alta disponibilidad (HA), redes de área de almacenamiento (SAN),
servidores de correo electrónico y más.

Cómo hacer la serie de laboratorio en casa


Una serie de tutoriales sobre cómo construir un sistema completo de laboratorio en casa desde cero que
sea fácil de usar para principiantes, versátil y de fácil mantenimiento.

No se pierda el siguiente segmento: suscríbase a mi lista de correo para


mantenerse actualizado. Y si se queda atascado en algún lugar del camino,
no dude en comunicarse conmigo para obtener ayuda, estaré feliz de ayudar
de cualquier manera que pueda.

Prefacio
Muy bien, este debería ser el último segmento de la serie antes de quetransmitir
nuestra señal pirata y piratear Matrixir en vivo y hospedarse en Internet abierto. Lo
que estamos haciendo aquí es crear un punto final dedicado para el acceso
remoto y agregarle una cantidad razonable de seguridad. Esto nos da acceso
remoto a una sesión de consola realmente utilizable en otras máquinas virtuales
invitadas para que podamos hacer cosas geniales como copiar y pegar, por
ejemplo.

Usaremos SSH con una configuración bloqueada para permitir el acceso solo con
una clave, no se permiten contraseñas, y también configuraremos Fail2Ban como
una medida de seguridad adicional. También mencionaré algunas otras tácticas
que puede usar para bloquear su servidor SSH.

Al final de este segmento, tendrá acceso a la red de su laboratorio doméstico "de


forma remota" desde dentro de su red doméstica , no tendrá acceso desde fuera
de su red doméstica hasta que configuremos el sistema para que esté abierto a
Internet (probablemente en el siguiente segmento). Lo sé, mala elección de
palabras, pero estamos configurando esto ahora para que esté listo una vez que
salgamos en vivo.

Configurar una máquina virtual de punto de acceso


Cree un nuevo clon vinculado de su plantilla de VM, llamaré al mío appara el punto
de acceso, puede configurar su ID de VM como desee o simplemente aceptar los
valores predeterminados, me gusta tener una pequeña organización en mi lista de
VM, así que ' Lo usaré 500para este.

¡Recuerde no usar identificaciones inferiores a 100!


Redes

Al igual que en los segmentos anteriores, necesitaremos configurar una dirección


IP estática y un reenvío de puerto NAT para esta VM, primero tome la dirección
MAC.
Deberá iniciar sesión en su pfSense VM ( https://ip-address:8080), si olvidó la
dirección IP, simplemente abra una consola en Proxmox y pfSense mostrará la
dirección IP WAN en la pantalla de bienvenida.

Diríjase a Estado> Arrendamientos DHCP y observe qué direcciones estáticas


están en uso para determinar la siguiente dirección disponible, en mi
caso 172.16.44.103, así que eso es lo que usaré.

A continuación, diríjase a Servicios> Servidor DHCP, haga clic en el botón


Agregar, complete el formulario, luego guarde y aplique la configuración.
Crearemos un nuevo alias para esta máquina virtual: Firewall> Alias> IP> Agregar.

Finalmente, agregaremos el reenvío de puertos: Firewall> NAT> Reenvío de


puertos> Agregar.
Ahora todo el tráfico que va a la dirección WAN de pfSense en el puerto SSH (22)
se reenviará a nuestra apVM.

¿Por qué no usar SSH en pfSense? Es mejor tener SSH disponible para Internet
abierto solo en un punto final dedicado, en el improbable caso de que su punto
final SSH esté comprometido, simplemente puede desconectar la red de esta
máquina virtual en Proxmox, lo que le permite detener la amenaza y mantener la
máquina virtual en funcionamiento. mientras investiga, sin interferir con los
servicios de producción. Aún podrá SSH en pfSense, solo tiene que pasar primero
por el punto de acceso.

Relacionados Cómo hacer el laboratorio en casa: Parte 9 - Expandiendo su red


doméstica

Calderería

¿Estás harto de esta parte? Yo también, construí un pequeño script bash para
automatizar el proceso de generar una nueva ID de máquina y claves de servidor
SSH, y establecer un nuevo nombre de host. Puede usarlo iniciando una sesión de
consola en su nueva VM (a través de Proxmox) y ejecutando el siguiente comando
que ejecutará el script directamente desde GitHub. (¿No sería bueno tener copiar
y pegar cuando terminemos este segmento?).
sudo bash -c "bash <(wget -qO-
https://raw.githubusercontent.com/dlford/ubuntu-vm-
boilerplate/master/run.sh)"

Querrá reiniciar cuando se le solicite porque la máquina virtual necesita recoger


las nuevas direcciones IP que le reservamos.

Nota: Siempre tenga cuidado al ejecutar scripts remotos, o cualquier script en


absoluto, especialmente como root, al menos debe leerlo para asegurarse de que
no esté haciendo nada indebido.

El código fuente de run.shestá disponible aquí para que pueda revisarlo:

dlford / ubuntu-vm-boilerplate
Un script bash simple para manejar configuraciones repetitivas para máquinas virtuales Ubuntu
clonadas (ID de máquina, claves de servidor SSH, nombre de host) - dlford / ubuntu-vm-boilerplate

Configuración SSH

Primero verifiquemos que SSH Server esté instalado y ejecutándose en la nueva


VM, ejecute el comando systemctl status sshd, debería obtener algo como la
imagen a continuación.

Si no lo hace, deberá ejecutar los siguientes comandos.


Nota: omita este comando de inicio por ahora si ya tiene un puerto 22abierto a
Internet, ejecútelo al final, después de que la configuración SSH esté asegurada

sudo apt install -y openssh-server


sudo systemctl enable sshd
sudo systemctl start sshd

Regresaremos a esta máquina virtual para proteger el servidor SSH después de


configurar una clave SSH en su estación de trabajo.

Pares de claves SSH


Me gustaría explicarte SSH en detalle explícito, pero Digital Ocean ya ha hecho un
gran trabajo, así que aquí tienes un enlace si estás interesado.

Comprensión del proceso de conexión y cifrado SSH | DigitalOcean


SSH, o shell seguro, es un protocolo cifrado que se utiliza para comunicarse con servidores remotos de
forma segura. Los usos prácticos de SSH se analizan ampliamente en otras guías. En este artículo,
examinaremos los procedimientos de conexión y cifrado subyacentes que hacen

Por seguridad, solo debe crear claves en la máquina que las utilizará, no cree
claves SSH en el servidor ni en ninguna otra máquina y luego transferirlas a una
nueva máquina. Si tiene varias estaciones de trabajo, cree varias claves, si se
deshace de una estación de trabajo o reinstala el sistema operativo, simplemente
cree una nueva clave (¡elimine el acceso a la antigua desde su servidor también!).

Crear un par de claves

Desde su estación de trabajo, ejecute el siguiente comando desde una terminal


para crear un nuevo par de claves.

Si está en Windows 10, ejecute esto desde PowerShell, si obtiene un error de "no
existe tal comando", debe instalar el cliente SSH. Abra la aplicación Configuración
y busque "Administrar funciones opcionales", desplácese hacia abajo hasta
"Cliente OpenSSH" y haga clic en Instalar.

ssh-keygen -t rsa -b 4096 -C "yourname@devicename"

Se le pedirá un directorio para almacenar los archivos clave (presione enter para
aceptar la ubicación predeterminada) y una contraseña opcional que recomendé
usar al menos en cualquier dispositivo que salga de su hogar (deberá proporcionar
la contraseña para usar la clave).
Esto debería crear un nuevo par de claves rsa de 4096 bits con el comentario
yourname @ devicename, el comentario es bueno para cuando necesite
desautorizar una clave del servidor, sabrá el usuario y el dispositivo que tiene esa
clave privada en particular.

Puede ver los archivos ejecutando el comando ls .ssh, el archivo id_rsaes la


clave privada que nunca debe salir de esta máquina, y id_rsa.pubes la clave
pública, que debe instalarse en cualquier servidor al que tenga acceso la clave
privada correspondiente.

Relacionados Cómo hacer el laboratorio en casa: Parte 7 - Gestión de registros

Administrar el acceso a la clave SSH

Existe una herramienta útil para copiar claves públicas a un servidor, ejecute el
siguiente comando para copiar su nueva clave pública SSH a la apVM.

usernamese refiere al nombre de usuario en el servidor remoto, no a su estación de


trabajo local, y la dirección IP debe ser la de su VM pfSense (que reenviará el
tráfico a la apVM).

ssh-copy-id username@ip-address

Verá una advertencia acerca de que The authenticity of host ... can't be
establishedesto sucede porque el servidor SSH en la apVM tiene una clave de
servidor que es desconocida para su estación de trabajo, si elige Sí, continuará
conectándose y guardará la clave del servidor en su estación de trabajo. Si se
tratara de un servidor al que se conectó antes, debería ser preocupante recibir
esta advertencia, ya que puede ser evidencia de un juego sucio, por ejemplo, un
pirateo de DNS para robar su clave SSH haciéndose pasar por el servidor al que
estaba tratando de conectarse , afortunadamente, el cliente SSH se negará
rotundamente a conectarse si hay una falta de coincidencia de la clave del
servidor (una falta de coincidencia sería una situación en la que el archivo de
hosts conocidos de su estación de trabajo tiene una entrada para el servidor de
destino, pero la clave guardada no coincide con la clave del servidor).

Se le pedirá la contraseña del usuario remoto y luego su clave SSH pública se


transferirá al servidor. Ahora ejecute el comando ssh username@ip-addresspara
conectarse, si ingresó una frase de contraseña al crear su clave SSH, se le pedirá
aquí, de lo contrario, debería conectarse de inmediato.

Si revisa el .sshdirectorio en el apservidor, verá un archivo


llamado authorized_keys, aquí es donde se almacenan todas las claves públicas
para este usuario, una por línea. También puede agregar y eliminar claves
directamente a / desde este archivo, si ejecuta nano .ssh/authorized_keysy
presiona la endtecla en su teclado para saltar al final de la línea, encontrará el
comentario que ingresó al crear el par de claves para identificar la clave pública ,
al presionar ctrl+ k"cortará" esa línea en caso de que desee eliminar una clave
(nota al margen: ctrl+ u"pegará" la línea previamente cortada en el nanoeditor de
texto).

Asegure el servidor SSH


 Hecho: Cientos, si no miles, de bots se ejecutan las 24 horas del día, los 7
días de la semana, se conectan a cualquier servidor SSH que puedan
encontrar e intentan iniciar sesión con nombres de usuario y contraseñas
comunes (esto en realidad se llama un ataque de lista de palabras, pero
comúnmente se agrupa con el término fuerza bruta , que técnicamente es el
proceso de probar todas las combinaciones posibles de personajes uno por
uno, de aquí en adelante me uniré a las masas y usaré el término fuerza
bruta para referirme a cualquiera de los dos)
 Realidad: El solo hecho de tener el puerto SSH 22abierto a Internet
resultará en intentos de fuerza bruta en su servidor
 Realidad: si un robot de fuerza bruta o un ser humano no autorizado inicia
sesión con éxito en su servidor, tendrá un día realmente malo

Implementaremos las tres medidas más efectivas contra los ataques de fuerza
bruta SSH:

 No permitir que el rootusuario inicie sesión de forma remota


 No permitir que ningún usuario inicie sesión mediante contraseña (solo
claves SSH)
 Limite la tasa de cualquier intento de inicio de sesión fallido con Fail2Ban.

Hay tácticas adicionales que pueden emplearse, no las cubriré aquí, pero si está
interesado, hágamelo saber, puedo considerar escribir un artículo sobre algunas
de ellas si hay algún interés. Siento que los tres anteriores son un buen equilibrio
entre seguridad y conveniencia para el sistema promedio, pero enumeraré algunas
tácticas más solo para ser minucioso.

 Deshabilite SSH (la opción más segura, sin acceso remoto)


 2FA (autenticación de dos factores)
 Lista blanca (solo permita el acceso a ciertas direcciones IP, esto podría
implementarse fácilmente en su VM pfSense)
 * Port knocking (Solo permita el acceso temporalmente a cualquier
dirección IP que haya enviado una serie de paquetes a puertos específicos
en secuencia)
 * Cambie el puerto SSH a otro que no sea22

* Estas dos últimas tácticas NO brindan ninguna seguridad en absoluto, no puedo


enfatizar ese hecho lo suficiente, son técnicas de ofuscación. Si bien la ofuscación
(ocultar el servidor) tiene sus beneficios en mi opinión, es decir, en el filtrado de la
mayoría de los bots y la reducción del spam en el registro del servidor, es una
distinción importante hacer que estas tácticas se eluden fácilmente si se
descubren, y es bastante factible que podría ser descubierto por un mal actor. Hay
muchos que creen que la ofuscación es una mala práctica debido a una falsa
sensación de seguridad, pero creo que pueden ser beneficiosas cuando se usan
de manera responsable.

Más configuración SSH

Ejecute el comando sudo nano /etc/ssh/sshd_configpara abrir el archivo de


configuración, querrá modificar o agregar las siguientes líneas.

No olvide reemplazar your-usernamecon su nombre de usuario real en el servidor.

LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 1
AllowUsers your-username
HostbasedAuthentication no
IgnoreUserKnownHosts no
IgnoreRhosts yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM no

Reinicie el servicio SSH con el comando sudo systemctl restart sshdpara


cargar los nuevos cambios de este archivo.

Tenga en cuenta que a partir de ahora, no puede usar el ssh-copy-idcomando


para nuevos pares de claves SSH ya que ya no se permite iniciar sesión mediante
contraseña, debe agregarlos manualmente al authorized_keysarchivo en el
servidor o cambiar la PasswordAuthenticationconfiguración yesy reiniciar el
servicio SSH.

Si tiene curiosidad, aquí hay un enlace a la manpágina (manual) sshd_configque


explica todas estas opciones en detalle.

sshd_config (5): archivo de configuración del demonio OpenSSH


SSH - página de manual de Linux
sshd (8) lee los datos de configuración de / etc / ssh / sshd_config (o el archivo especificado con -f en la
línea de comando). El archivo contiene pares de palabras clave-argumento, ...

Configurar Fail2Ban
Fail2Ban es una herramienta increíblemente útil, escanea los archivos de registro
en busca de inicios de sesión fallidos (u otro comportamiento no deseado) y
bloquea dinámicamente las direcciones IP durante un período de tiempo
configurado, lo que limita de manera efectiva cualquier intento de fuerza bruta.

Ejecute el comando sudo apt install -y fail2ban, luego sudo nano


/etc/fail2ban/jail.localpara crear un nuevo archivo de configuración.

si jail.localno se encuentra el archivo , Fail2Ban utilizará el archivo de


configuración predeterminadojail.conf

Fail2Ban es muy poderoso y tiene un montón de opciones de configuración, pero


hagámoslo simple y solo configuremos una cárcel.

[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
findtime = 3600
bantime = 300
maxretry = 2

Ahora, para habilitar Fail2Ban, ejecute los siguientes comandos:

sudo systemctl enable fail2ban


sudo systemctl start fail2ban

A continuación, se muestra un desglose de las opciones en uso:

 [sshd]: El nombre de esta cárcel


 enabled = true: Hacer cumplir las reglas de esta cárcel
 port = 22: Prohibir que las direcciones IP encarceladas accedan al
puerto 22
 filter = sshd: El archivo de filtro contiene patrones RegEx para el archivo
de registro de destino, esencialmente indicando a Fail2Ban qué entradas de
registro son intentos de inicio de sesión fallidos y dónde obtener la dirección
IP de la entrada de registro. Los archivos de filtro se encuentran
en /etc/fail2ban/filter.d, hay muchos que se envían con el paquete o
puede escribir los suyos propios.
 logpath = /var/log/auth.log: Ruta completa al archivo de registro para
ver
 findtime = 3600: Esta es la ventana de tiempo en la que se contarán las
visitas del archivo de registro, medidas en segundos.
 bantime = 300: La cantidad de tiempo para prohibir una dirección IP,
medida en segundos
 maxretry = 2: El número de intentos repetidos que se permiten antes de
prohibir una dirección IP.
Efectivamente, esta cárcel prohibirá que una dirección IP acceda al
puerto 22durante cinco minutos si ha realizado más de dos intentos fallidos de
iniciar sesión en una hora. El recuento es acumulativo, por lo que si una dirección
se prohibió durante cinco minutos y hace otro intento fallido inmediatamente
después, el recuento ya se excedió y se volvería a prohibir durante otros cinco
minutos.

Me gusta usar un tiempo de búsqueda largo y un tiempo de prohibición corto


porque establece un límite de velocidad estricto de 12 intentos por hora (después
de la primera prohibición), que es lo suficientemente lento y tiene un impacto grave
en un ataque de fuerza bruta, pero el tiempo de prohibición es lo suficientemente
corto como para usted comete un error, no tiene que esperar demasiado antes de
volver a intentarlo.

Si quisiera, podría crear una segunda cárcel para cubrir los ataques realmente
persistentes que simplemente no saben cuándo dejar de fumar, por ejemplo, para
prohibir una dirección durante una semana si hace más de 19 intentos fallidos en
una semana (en un máximo de 12 intentos por hora desde la cárcel anterior,
tomaría alrededor de una hora y media obtener 19 intentos fallidos, por lo que esta
cárcel prohibiría una dirección durante una semana si atacan persistentemente el
servidor durante más de una hora y media ). Esa regla se vería así:

[sshd-persistent]
enabled = true
port = ssh
logpath = /var/log/auth.log
filter = sshd
bantime = 604800
findtime = 604800
maxretry = 19

Dado que esta cárcel necesita recordar eventos durante más tiempo que la
cantidad de tiempo que Fail2Ban realiza un seguimiento de forma predeterminada,
tendremos que cambiar ese valor predeterminado. Ejecute el comando sudo nano
/etc/fail2ban/fail2ban.confy edite la línea dbpurgeage = 1dpara
leer dbpurgeage = 8d. Tenga en cuenta que esto requerirá más recursos para que
Fail2Ban se ejecute.

Deberá ejecutar sudo systemctl restart fail2banpara cargar la nueva cárcel y


el cambio de configuración.

También hay una cárcel "reincidente" que puede configurar, que hace casi lo
mismo que el anterior al prohibir las direcciones persistentes durante un largo
período de tiempo, la diferencia es que no busca en el archivo de registro un
evento específico como un inicio de sesión fallido, busca en el propio archivo de
registro de Fail2Ban los eventos de prohibición, esencialmente si una dirección ha
sido prohibida x veces en una ventana de tiempo y, prohíbala por más tiempo. Sin
embargo, me gusta el control de configurar esto para cada cárcel individualmente
para cada servicio.
Relacionados How to Home Lab: Parte 8 - Introducción a Docker: instalación y
uso.

Pruebe su configuración
Queremos asegurarnos de que todo funcione, ¿verdad? Abra una sesión de
consola en su apVM en Proxmox y ejecute el comando sudo apt install -y
lnav, que es una herramienta para navegar por los archivos de registro. Una vez
hecho esto, continúe y ejecute lnav /var/log/fail2ban.logpara que podamos
monitorear el archivo (es posible que deba tocar la tecla de flecha derecha en su
teclado para desplazar el texto a la vista, las marcas de fecha son muy largas).

Desde su estación de trabajo, ejecute el comando ssh -o


PreferredAuthentications=password -o PubkeyAuthentication=no username@ip-
address, esto le dice al cliente SSH en su máquina que intente iniciar sesión con
una contraseña en lugar de su clave SSH. Debería ver el Permission denied
(publickey)error, eso es lo que queremos ver, el inicio de sesión con contraseña
no está permitido. Ahora intente ssh root@ip-address, debería ver el mismo error,
pero también en su lnavventana debería ver [sshd] Found ip-address...con la
dirección IP de su estación de trabajo. Intente iniciar sesión como root
nuevamente desde su estación de trabajo y debería ver [sshd] Ban ip-addressen
la lnavventana, inténtelo por tercera vez y encontrará que la conexión se agota
porque fail2ban ha bloqueado la solicitud.

Bien, todo funciona, ¡pero ahora estás bloqueado! Arreglemos eso, en su sesión
de consola Proxmox en la apVM, presione la qtecla para salir lnavy ejecute el
comando sudo fail2ban-client status sshdpara ver una lista de direcciones IP
prohibidas, que obviamente debería ser solo su estación de trabajo. Puede
desbloquear la dirección ejecutando el comando sudo fail2ban-client set sshd
unbanip your-workstation-ip-address.

Acceder a otros hosts


Ahora, para la parte divertida, SSH en la apVM desde su estación de trabajo ( ssh
user@ip-address), ahora ejecute ssh user@nginx, se le pedirá que ingrese la
contraseña para ese usuario en la VM NGINX. Dado que la apVM está en el
mismo dominio que sus otras VM y pfSense está configurado para registrar
nombres DNS para direcciones DHCP reservadas, puede SSH en la VM NGINX
por su nombre de host nginx, lo mismo debería aplicarse a la aplicación web 4t
que configuramos con el nombre de host 4t-app.

Nota: Si no puede resolver por nombre de host, abra su página de administración


de pfSense y asegúrese de que la casilla de verificación en Servicios> Resolución
de DNS> Configuración general> Registrar asignaciones estáticas de DHCP en la
resolución de DNS esté marcada.
Aún mejor, si está utilizando el mismo nombre de usuario para todas las máquinas
virtuales, ni siquiera necesita el nombre de usuario, simplemente puede ejecutar el
comando ssh nginx, ¡o ssh 4t-appdesde la apmáquina virtual! Bastante ordenado,
¿verdad?

Si no puede conectarse desde la apVM a otra, es posible que deba abrir una
consola a través de Proxmox e instalar SSH en la VM de destino (consulte los
pasos anteriores para la configuración SSH).

Dado que estas otras máquinas virtuales no tienen el puerto SSH abierto a
Internet, podemos dejarlas en la autenticación de contraseña. Si decide crear una
clave SSH en la apVM para acceder a otras VM, asegúrese de que la clave tenga
una frase de contraseña y no agregue su clave pública al archivo
de apVM authorized_keys.

Consejos y trucos
Eso es todo para este segmento, te dejo con una pequeña colección de útiles
trucos de línea de comando y SSH.

TMUX

tmuxes un multiplexor de terminal, le permite ejecutar múltiples sesiones de


terminal en el mismo host que persisten en las sesiones SSH. Déjame mostrarte lo
que quiero decir, desde tu apVM ejecuta el comando sudo apt install -y tmux,
luego ejecuta el comando tmuxpara iniciar una nueva sesión.

Verás una barra verde en la parte inferior de la pantalla con información. Ejecute el
comando toppara enumerar los procesos en ejecución en la apVM, luego
presione ctrl+ bque cambia el enfoque al tmuxproceso, luego presione la dtecla
para desconectarse de la tmuxsesión. Ahora está de vuelta en la consola principal
y debería ver algo como [detached (from session 0)], ahora escriba exitpara
salir de la sesión SSH, está de vuelta en la terminal de su estación de trabajo.

La tmuxsesión y el topcomando aún se están ejecutando, vuelva a SSH en


su apVM y ejecute el comando tmux ls, debería ver algo como 0: 1 windows
(created Sun Sep 29 17:44:57 2019) [180x59], ejecute el comando tmux
attachy, oye, su topcomando aún se está conectando.

A continuación, intente presionar ctrl+ b, y luego cpara crear una nueva ventana,
tenga en cuenta que la esquina inferior izquierda ahora muestra dos
ventanas 0:top-, y 1:bash. Ejecute el comando watch freeaquí, esto repetirá el
comando freeque muestra la información de la memoria, cada dos segundos al
mostrar la salida. Ahora tiene dos comandos continuos ejecutándose en
diferentes tmuxventanas.
Presione ctrl+ by luego no ppara saltar a la ventana anterior o siguiente,
respectivamente. Solo hemos arañado la superficie de lo que se tmuxpuede hacer
aquí, pero seguramente puede ver lo útil que es. Presiona ctrl+ bnuevamente y
presiona dpara desconectar. Ejecutar tmux lsahora mostrará dos ventanas
abiertas, ejecute el comando tmux kill-serverpara cerrar todas las tmuxsesiones
y ventanas abiertas.

Relacionados Home Lab Servidor de correo electrónico: cómo evitar los bloques
de puertos de ISP

Comandos rápidos

Si solo desea ejecutar un comando en su servidor remoto y luego salir, puede


agregar el comando al comando de conexión SSH, por ejemplo, ssh user@ip-
address freeiniciará sesión en el servidor remoto, ejecutará el freecomando y
devolverá la salida a la terminal de su estación de trabajo.

Transferir archivos

El scpcomando transferirá archivos a través de una conexión SSH. SSH en


su apVM y ejecute los siguientes comandos para crear un archivo de texto con un
mensaje dentro.

touch hello.txt
echo "This is a test" > hello.txt

Ahora ejecute exitpara salir de la sesión SSH, y luego ejecute scp user@ip-
address:hello.txt ./, esto copiará el hello.txtarchivo del host remoto a su
directorio actual, ejecute lspara verlo en su directorio actual. También puede
copiar un archivo de su estación de trabajo al host remoto, por ejemplo scp
./hello.txt user@ip-address:~/.

La sintaxis es scp FROM TO, cualquiera de estos puede ser la ruta a un archivo
local, o una conexión de host remoto seguida de dos puntos :y luego una ruta en
el host remoto. el ~símbolo de tilde solo significa la ruta de inicio del usuario actual
(por ejemplo /home/username).

Túneles

Puede crear túneles SSH al establecer una conexión con la -Lbandera, la sintaxis
es ssh -L localport:remotehost:remoteport user@ip-address.

Intente ejecutar desde su estación de trabajo ssh -L 1234:4t-app:5000 user@ip-


address, esto hará un túnel del puerto 1234en su estación de trabajo al
puerto 5000en la 4t-appVM. Ahora intente visitar http://localhost:1234el
navegador de su estación de trabajo, el navegador se conectará al puerto 1234de
su estación de trabajo, que se canaliza a través de la apVM al puerto 5000de la 4t-
appVM, y esto funciona porque la apVM puede ubicar y comunicarse con el 4t-
appya que ambos están detrás del firewall y en la misma red.

Cómo hacer el laboratorio en casa:


Parte 6 - Alojamiento en la Web
 Autohospedaje
 Cómo hacer la serie de laboratorio en casa
 Redes
 DNS
 Proxmox
 Laboratorio casero

30 de noviembre de 2019

Tabla de contenido
 Obtener un nombre de dominio
o Lo que busco en un registrador de dominios
 Reglas de pfSense
o Alias
 No público
o Reglas
 Permitir todo en esta subred
 Permitir DNS saliente
 Permitir NTP saliente
 Rechazar no público
 Permitir ICMP
 Permitir puertos web
 Eliminar reglas predeterminadas
o Ajustes
 Deshabilitar IPv6
 Desactivar la regla antibloqueo
 Agregar un reenvío de puerto desde Internet externo
 Configurar DNS externo
oConfigurar el servicio de DNS dinámico
oScript de DNS dinámico
 Guión Bash
 /usr/local/updateServerIP.sh
 Archivo de servicio Systemd
 /etc/systemd/system/updateServerIP.service
 Archivo de temporizador de Systemd
 /etc/systemd/system/updateServerIP.timer
 Propagación de DNS
 Reconfigurar NGINX
 LetsEncrypt
 Una nota sobre los dominios de Apex

Mantén la calma y pásalo


Si encuentra esto útil, considere compartirlo en las redes sociales para ayudar a correr la voz.

La intención de esta serie es poner en marcha a los nuevos trabajadores


domésticos con un laboratorio doméstico versátil, fácil de mantener y fácil de
mantener, y equiparlos con el conocimiento para administrar y utilizar con
confianza sus sistemas, y eventualmente trabajar hasta el hogar avanzado. redes,
sistemas de alta disponibilidad (HA), redes de área de almacenamiento (SAN),
servidores de correo electrónico y más.

Cómo hacer la serie de laboratorio en casa


Una serie de tutoriales sobre cómo construir un sistema completo de laboratorio en casa desde cero que
sea fácil de usar para principiantes, versátil y de fácil mantenimiento.

Obtener un nombre de dominio


Lo más probable es que desee un nombre de dominio, a menos que le guste decir
cosas como "¡Oye, visita mi sitio web en 198.18.42.129!" Puede encontrar algunos
nombres de dominio gratuitos si busca, la mayoría de ellos son de marca (por
ejemplo yourdomain.somecompany.com), y los otros generalmente no ofrecen muy
buenas herramientas, por lo que si elige uno de esos, prepárese para un trabajo
adicional configurando DNS , posiblemente incluso comprando una dirección IP
estática de su ISP.

Lo que busco en un registrador de dominios

1. DNS dinámico gratuito


o El DNS dinámico le brinda acceso a la API para actualizar su dirección IP si
no tiene una IP estática, que se puede automatizar con secuencias de
comandos.
2. Privacidad Whois gratuita
o No quiere que su nombre y dirección estén disponibles para nadie que
sepa cómo utilizar la whoisherramienta, ¿verdad?
3. Soporte TOTP (contraseña de un solo uso basada en el tiempo)
o No use su teléfono celular para 2FA, ¡simplemente no es seguro! Hay
toneladas de herramientas TOTP disponibles en estos días, por ejemplo, el
administrador de contraseñas KeePassXC gratuito y de código abierto es
compatible con TOTP.

KeePassXC
KeePassXC puede almacenar sus contraseñas de forma segura y escribirlas automáticamente en sus
sitios web y aplicaciones cotidianos.

Hay muchos registradores de dominios excelentes, ¡y muchos de ellos


también! Namecheap marca todas las casillas por mí, y proporcionaré un script a
continuación para DNS dinámico, solo puedo confirmar que funciona con
Namecheap (estoy seguro de que puede encontrar algunos scripts o herramientas
para la mayoría de los otros registradores populares si los buscaste).

Si decide usar Namecheap, coloque un dominio en este formulario y presione


Buscar para ver si está disponible, ¡el antiguo firstnamelastname.comsiempre es
una buena opción!

Nota: Este formulario es un enlace de afiliado.

Encuentre un dominio a partir de $ 0.88

impulsado por Namecheap

No se preocupe por configurar nada más, solo asegúrese de tener un dominio.

Reglas de pfSense
Queremos bloquear la red LAN (que en realidad es producción,
técnicamente). Tenga en cuenta que las reglas de pfSense se leen primero
coinciden de arriba hacia abajo y se aplican al tráfico que ingresa a la interfaz, por
lo que las reglas que estamos agregando son para restringir el tráfico que ingresa
a la interfaz LAN y sale de la red LAN la interfaz WAN, o el tráfico que ingresa a la
red LAN desde el exterior, es restrictivo de forma predeterminada). Inicie sesión en
su panel de pfSense ( https://IPADDRESS:8080).

Relacionados Cómo hacer el laboratorio en casa: Parte 4 - Proxy inverso NGINX

Alias

Dirígete a Firewall> Alias> IP

NO PÚBLICO

Agregaremos un alias para direcciones no públicas, que incluye las direcciones


reservadas para redes privadas (RFC1918), las direcciones reservadas para uso
especial (RFC5735), hay algunos otros rangos de direcciones reservados, pero no
me preocupan mucho. aquí, si tiene algún esquema de direccionamiento IP loco
en su red doméstica, asegúrese de que esté en la lista.

Estas son direcciones a las que restringiremos el acceso de las VM internas para
proteger su red doméstica. Es posible que desee
agregar 255.255.255.255/32transmisión y 224.0.0.0/4multidifusión a esta lista
también, pero no creo que sea necesario.

 Nombre: Non_Public
 Descripción: Direcciones IP no públicas
 Tipo: Redes
 La red
o 10.0.0.0/8
o 172.16.0.0/12
o 192.168.0.0/16
o 169.254.0.0/16
o 127.0.0.0/8

Guarde y aplique los cambios antes de continuar.

Reglas

Dirígete a Firewall> Reglas> LAN.

Nota: No voy a entrar en el enrutamiento IPv6 aquí, de hecho lo vamos a


deshabilitar en pfSense, hay una capa completamente diferente de
consideraciones de seguridad para IPv6.

PERMITIR TODO EN ESTA SUBRED

Primero, queremos permitir cualquier tráfico que provenga de y hacia la red LAN,
no hace nada en este momento, pero nos ahorrará mucho drama en el futuro si
expandimos la red a través de múltiples conmutadores o algo por el estilo.
naturaleza.

 Acción: Pasar
 Deshabilitado: sin marcar
 Interfaz: LAN
 Familia de direcciones: IPv4
 Protocolo: Cualquiera
 Fuente: LAN net
 Destino: red LAN
 Registro: sin marcar
 Descripción: Permitir toda esta subred

Relacionados How to Home Lab: Parte 8 - Introducción a Docker: instalación y uso.


PERMITIR DNS SALIENTE

Sus máquinas virtuales deben usar pfSense para su servidor DNS de forma
predeterminada, pero algunas aplicaciones tienen su propia configuración
predeterminada (como el script de DNS dinámico que se muestra a continuación,
que fallaría sin esta regla habilitada).

 Acción: Pasar
 Deshabilitado: sin marcar
 Interfaz: LAN
 Familia de direcciones: IPv4
 Protocolo: TCP / UDP
 Fuente: LAN net
 Destino: cualquiera
o Rango de puerto de destino
o Desde: DNS (53)
o Para: DNS (53)
 Registro: sin marcar
 Descripción: Permitir DNS saliente

PERMITIR NTP SALIENTE

NTP es Protocolo de tiempo de red, lo estamos agregando prácticamente por las


mismas razones que la regla DNS.

 Acción: Pasar
 Deshabilitado: sin marcar
 Interfaz: LAN
 Familia de direcciones: IPv4
 Protocolo: TCP / UDP
 Fuente: LAN net
 Destino: cualquiera
o Rango de puerto de destino
o Desde: NTP (123)
o Para: NTP (123)
 Registro: sin marcar
 Descripción: Permitir NTP saliente
RECHAZAR NO PÚBLICO

Tenga en cuenta que, dado que pfSense coincide con las reglas de arriba hacia
abajo, cualquier regla por debajo de esta solo se aplicará a las direcciones IP
públicas, ya que las direcciones no públicas ya están bloqueadas.

 Acción: Rechazar
 Deshabilitado: sin marcar
 Interfaz: LAN
 Familia de direcciones: IPv4
 Protocolo: Cualquiera
 Fuente: LAN net
 Destino: host único o alias, no público
 Registro: marcado
 Descripción: Rechazar no público

PERMITIR ICMP

El Protocolo de mensajes de control de Internet (ICMP) hace más que solo


manejar ping, en muchos casos es absolutamente imperativo para la
comunicación.

 Acción: Pasar
 Deshabilitado: sin marcar
 Interfaz: LAN
 Familia de direcciones: IPv4
 Protocolo: ICMP
 Subtipos de ICMP: Cualquiera
 Fuente: LAN net
 Destino: cualquiera
 Registro: sin marcar
 Descripción: Permitir ICMP

Relacionados Cómo hacer el laboratorio en casa: Parte 7 - Gestión de registros


PERMITIR PUERTOS WEB

 Acción: Pasar
 Deshabilitado: sin marcar
 Interfaz: LAN
 Familia de direcciones: IPv4
 Protocolo: TCP
 Fuente: LAN net
 Destino: cualquiera
 Rango de puerto de destino
o Desde: Web_Ports
o Para: Web_Ports
 Registro: sin marcar
 Descripción: Permitir puertos web
ELIMINAR REGLAS PREDETERMINADAS

Querrá eliminar las reglas Default allow LAN to any rule, y Default allow LAN
IPv6 to anyahora. Luego siga adelante y aplique los cambios.

Verifique dos veces el orden de las reglas, hacerlo mal podría romper cosas o
abrir agujeros de seguridad, debería verse así:

Vamos a deshacernos de eso Anti-Lockout Ruleen la parte superior en breve, así


que no se preocupe todavía.

Es posible que también desee agregar reglas al final de la lista para permitir
el acceso de salida Git (puerto 9418) y SSH (puerto 22), aunque evitaría permitir
este último a menos que sea realmente necesario.

Ajustes

DESHABILITAR IPV6

Dirígete a Sistema> Avanzado> Redes, desmarca la casilla Allow IPv6y luego haz
clic en Guardar en la parte inferior de la página.
Relacionados Home Lab Servidor de correo electrónico: cómo evitar los bloques de
puertos de ISP
DESACTIVAR LA REGLA ANTIBLOQUEO

A continuación, diríjase a Sistema> Avanzado> Acceso de administrador y marque


la casilla junto a Anti-lockout, que asegura que las direcciones LAN siempre
puedan acceder a la interfaz de administración de pfSense, no queremos eso ya
que estamos accediendo a la interfaz de administración desde el lado WAN. De
nuevo, guarde en la parte inferior de la página.

Agregar un reenvío de puerto desde Internet


externo
Esta parte es difícil de explicar, porque hay tantos dispositivos periféricos,
módems y enrutadores, haré todo lo posible aquí, pero si te atascas, avísame e
intentaré ayudarte. Si aún no tiene acceso a su dispositivo periférico
(generalmente un combo de módem / enrutador proporcionado por su ISP),
la sección Descubra su red de mi artículo Introducción a las redes debería llevarlo
allí.

Además, si su servidor Proxmox está detrás de un segundo enrutador, deberá


agregar un puerto de reenvío en ambos enrutadores (primero a segundo, segundo
a Proxmox), o simplemente conectar Proxmox directamente al primero.

Desde esa interfaz web, querrá buscar una configuración llamada "Reenvío de
puerto", "Host virtual" o "Servidor virtual", que generalmente se encuentra en un
menú llamado "Avanzado", "Enrutamiento", "Cortafuegos", "Reglas de entrada", o
alguna combinación de ellas. A veces solo tienes que hacer clic en todos los
menús hasta que encuentres el lugar extraño en el que decidieron ponerlo.

Una vez allí, querrá agregar dos reenvíos de puerto:

 HTTP
o Host: dirección IP de pfSense VM
o Puerto: 80 (o de 80 a 80)
o Protocolo: TCP
 HTTPS
o Host: dirección IP de pfSense VM
o Puerto: 443 (o de 443 a 443)
o Protocolo: TCP

Nota: Esta es su línea principal hacia el mundo exterior, si alguna vez desea
derribar su laboratorio doméstico, asegúrese de que sus reenvíos de puerto
también se deshabiliten.

Nota: Algunos pueden tener la tentación de configurar su servidor como un host


DMZ que esencialmente abre todos los puertos a Internet, o poner su dispositivo
de borde en modo puente que abre todos los puertos para cualquier dispositivo en
la red doméstica, por favor no lo haga. de esas cosas por razones de seguridad.

A continuación, diríjase al Probador de reenvío de puertos de YouGetSignal.com y


asegúrese de que tanto el 80 como el 443 estén abiertos al mundo exterior, debe
completar automáticamente su dirección IP pública (técnicamente, la dirección IP
de su módem).

Configurar DNS externo


Supongo que está usando Namecheap aquí, si no lo está, los pasos deberían ser
realmente similares, excepto por el script de DNS dinámico que puede necesitar
un poco de trabajo para conectarse con otro servicio.

Configurar el servicio de DNS dinámico

Inicie sesión en su cuenta y haga clic en el botón "Administrar" junto a su dominio


en el Panel de control.
Haga clic en la pestaña "DNS avanzado" y luego haga clic en "Agregar un nuevo
registro".
Elija las siguientes opciones:

 Tipo: A + Registro de DNS dinámico


 Anfitrión: @
 Valor: 0.0.0.0
 TTL: automático

Usar @ para el host solo significa que el dominio ápice, por ejemplo, google.comes
un dominio ápice, www.google.comno lo es. El 0.0.0.0valor no se enrutará a
ninguna parte, y esto es intencional, cuando ejecutamos el script de DNS
dinámico, debe completar el valor correcto y sabremos que está funcionando.

Agregue un registro DNS más:

 Tipo: Registro CNAME


 Anfitrión: www
 Valor: midominio.tld.
 TTL: automático

Tenga en cuenta que el valor debe ser su nombre de dominio ápice con un punto
adicional al final. Esto dirigirá las solicitudes www.yourdomain.comal dominio apex
( @), que tendrá la entrada DNS dinámica. También puede cambiar el valor
de wwwa *, que dirigiría wwwal igual que cualquier otro subdominio
como somethingelse.mydomain.comel nombre de dominio de ápice.

Ahora continúe y haga clic en el icono de la papelera en el lado derecho de todos


los registros DNS que no acaba de crear para deshacerse de ellos. Desplácese
hacia abajo en la página hasta la sección DNS dinámico y copie su contraseña,
guárdela en un archivo de texto por ahora porque la necesitará para configurar el
script de DNS dinámico.
Mantenga esta contraseña segura, cualquiera que la tenga podrá cambiar la
dirección IP de su dominio, ¡eso podría ser un desastre! Además, guarde en su
cerebro que aquí es donde cambiaría esa contraseña si fuera necesario, haciendo
clic en el pequeño icono de actualización a la derecha de la contraseña. El
"software cliente" que ofrecen funciona bien, pero es solo para Windows, por lo
que, a menos que tenga una máquina Windows siempre encendida (o incluso si la
tiene), probablemente solo querrá usar un script en su lugar.

Relacionados Introducción a las redes de computadoras, binarias y hexadecimales

Script de DNS dinámico

Permítanme comenzar diciendo que si nunca antes ha usado scripts bash, esto
puede parecer bastante abrumador, pero es más fácil de lo que parece, ¡así que
no se asuste! Primero, SSH en su servidor NGINX, creo que es un lugar lógico
para manejar DNS dinámico (pero siéntase libre de crear una nueva VM para esto
si lo desea, esa sería la opción más segura).

Necesitamos tres archivos, un script de shell para hacer el trabajo pesado, un


archivo de servicio systemd para iniciarlo y un archivo de temporizador systemd
para programarlo. También podrías usar cron para esto, pero realmente he
adoptado systemd por lo dinámico que puede ser.

También debe tener el servidor de destino configurado para enviar correo


electrónico y tener el mailutilspaquete instalado, para lo cual tengo una
guía aquí .

GUIÓN BASH

Lo primero es lo primero, dado que este archivo contendrá su contraseña de DNS


dinámico de su registrador, creemos el archivo y establezcamos permisos seguros
para que solo rootpueda leer / escribir / ejecutar (ejecute estos comandos como
root).

touch /usr/local/updateServerIP.sh
chown root:root /usr/local/updateServerIP.sh
chmod 0700 /usr/local/updateServerIP.sh

Permítanme explicar qué hace este script antes de entrar en él, para cada dominio
configurado, cada vez que se ejecuta el script:

1. Verifique la dirección IP actual a través de una búsqueda de DNS ( nslookup)


2. Consulta myip.opendns.comtu dirección IP pública actual ( dig)
3. Compare los dos y deje de correr si son iguales (no se necesitan cambios)
4. Envíe una solicitud HTTPS para actualizar la dirección IP ( curl)
5. Envíe los resultados en un correo electrónico ( mail)
6. Registre todas las acciones de cambio en /var/log/updateServerIP.log
Al principio del guión, deberá cambiar you@yourdomain.coma su dirección de correo
electrónico, y hacia el final encontrará un bloque que se ve así:

# --------------------------------
# ------ BEGIN HOST DEFINITION ---
# --------------------------------
isdiff='1'
# --------------------------------
hostlist=("@")
domain="mydomain.com"
password="DynamicDnsSecretFromNamecheap"
# --------------------------------
ipcheck $domain $hostlist
if [ $isdiff -eq 0 ]; then
update $hostlist $domain $password
fi
# --------------------------------
# -------- END HOST DEFINITION ---
# --------------------------------

Querrá cambiar mydomain.coma su nombre de dominio (no use subdominios aquí,


solo el ápice) y cambiar DynamicDnsSecretFromNamecheap, como probablemente
adivinó, el secreto de DNS dinámico que obtuvo de Namecheap.

La línea hostlist=("@")que probablemente desee dejar como está, puede


especificar uno o más subdominios aquí si tiene un diseño complejo con diferentes
subdominios que van a diferentes direcciones IP, por ejemplo, si solo
desea sub3y sub7apunte a su dirección IP pública. usaría hostlist=("sub3"
"sub7"), pero la mayoría de las veces probablemente solo querrá usar apex ( @)
aquí y usar registros CNAME para los subdominios como lo hicimos con www.

Una cosa más que debe saber es que puede copiar todo el bloque de código
entre BEGIN HOST DEFINITIONy END HOST DEFINITION, y pegarlo debajo del
existente (justo encima de la exit 0línea) para agregar otro dominio, ¡puede
agregar tantos como necesite!

Aquí está el guión completo:

/usr/local/updateServerIP.sh
#!/bin/bash

# Your Email address goes here


emailAddress="you@yourdomain.com"

logFile="/var/log/updateServerIP.log"
touch $logFile

logMessage() {
case $1 in
1)
level="INFO"
;;
2)
level="WARN"
;;
3)
level="FAIL"
;;
esac
echo "[$(date)] [$level] - $3" >>$logFile
if [[ $2 == "1" ]]; then
echo "[$(date)] [$level] - $3" | mail -s "ALERT updateServerIP.sh"
$emailAddress
fi
}

ipcheck() {
isdiff=1
hostlist=$2
ipaddressnew=$(dig +short myip.opendns.com @resolver1.opendns.com)
for host in ${hostlist[@]}; do
if [ $host == "@" ]; then
ipaddresscurrent=$(nslookup $1 8.8.8.8 | grep Address | grep -v "#"
| cut -f2 -d" ")
else
ipaddresscurrent=$(nslookup $host.$1 8.8.8.8 | grep Address | grep
-v "#" | cut -f2 -d" ")
fi
diffcheck=$(echo $ipaddresscurrent | grep -c $ipaddressnew)
if [ $diffcheck -eq 0 ]; then
isdiff=0
fi
done
}

update() {
hostlist=$1
for host in ${hostlist[@]}; do
response=$(curl https://dynamicdns.park-your-
domain.com/update?host=$host\&domain=$2\&password=$3\&ip=$ipaddressnew)
errorcount=$(echo $response | perl -pe
"s/.*\<errcount\>(\d+)\<\/ErrCount\>.*/\$1/gi")
if [ $errorcount -gt 0 ]; then
logMessage 3 1 "$response"
else
message="Updated IP Address $host.$2 from $ipaddresscurrent to
$ipaddressnew"
logMessage 1 0 "$message"
fi
done
}

# --------------------------------
# ------ BEGIN HOST DEFINITION ---
# --------------------------------
isdiff='1'
# --------------------------------
hostlist=("@")
domain="mydomain.com"
password="DynamicDnsSecretFromNamecheap"
# --------------------------------
ipcheck $domain $hostlist
if [ $isdiff -eq 0 ]; then
update $hostlist $domain $password
fi
# --------------------------------
# -------- END HOST DEFINITION ---
# --------------------------------
exit 0
ARCHIVO DE SERVICIO SYSTEMD
Relacionados Tres sencillos pasos para enviar alertas por correo electrónico desde un
servidor Linux
/etc/systemd/system/updateServerIP.service
[Unit]
Description=Check external IP address against DNS and update if needed

[Service]
Type=oneshot
ExecStart=/usr/local/bin/updateServerIP.sh
ARCHIVO DE TEMPORIZADOR DE SYSTEMD
/etc/systemd/system/updateServerIP.timer
[Unit]
Description=Check external IP address against DNS and update if needed

[Timer]
# Time to wait after booting before the first run
OnBootSec=15min
# Time each consecutive run
OnUnitActiveSec=30min
Unit=updateServerIP.service

[Install]
WantedBy=timers.target
PROPAGACIÓN DE DNS

Una vez que haya creado los archivos de servicio y temporizador, ejecute los
comandos (como root) systemctl enable updateServerIP.timery systemctl
start updateServerIP.timer. Ahora, el script se ejecutará automáticamente 15
minutos después de que se inicie la VM, y cada 30 minutos después de eso.

Ejecute el comando systemctl list-timers, debería ver el nuevo que acabamos


de crear y junto a él el tiempo restante hasta la próxima ejecución, ¿tal vez ir a
hacer un poco de café mientras espera?

Vuelva a iniciar sesión en su registrador y verifique la página de configuración de


DNS nuevamente, con suerte, esa 0.0.0.0dirección se actualizó a la correcta. Si
lo hizo, ahora debe esperar la propagación de DNS. El tiempo que tomará
depende principalmente de lo que se configuró el tiempo de vida (TTL) antes de
realizar los cambios de registro, que a veces pueden demorar días, pero
generalmente es bastante rápido para dominios nuevos, haga clic en el enlace a
continuación para verificar la propagación para su dominio.

Comprobador de DNS: herramienta de propagación de


comprobación de DNS
Compruebe la propagación de DNS en todo el mundo. DNS Checker proporciona una verificación de
propagación del servidor de nombres al instante. Los servidores de nombres cambiados, así que haga
una búsqueda de DNS y verifique si el DNS y los servidores de nombres se han propagado.
Si aún no está allí, dale un poco más de tiempo. Si han pasado unos días y aún no
funciona, use el informe DNS de DNStools para obtener información más
detallada, luego comuníquese con su registrador, ellos deberían poder enviarlo en
la dirección correcta si no pueden solucionar el problema. .

Relacionados Sieve: configurar respuestas de vacaciones con alias y delimitador de


destinatarios

Herramientas DNS | Administrar Monitor Analizar | DNSstuff


DNSstuff ofrece herramientas de DNS, herramientas de red, herramientas de correo electrónico,
informes de DNS y recopilación de información de IP. Explore los productos de monitoreo y las
herramientas DNS gratuitas en DNSstuff.

Reconfigurar NGINX
Primero, necesitaremos un certificado autofirmado para configurar las cosas,
obtendremos certificados legítimos de LetsEncrypt a continuación, pero
necesitamos algo para que los sitios se ejecuten en el puerto 443 para poder
hacer eso (como cuando compra un par de tijeras y necesita un par de tijeras para
abrir el embalaje). Desde su VM NGINX, ejecute los siguientes comandos como
root:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days
365000 -nodes
mv key.pem /etc/ssl/private/ssl-cert-snakeoil.key
mv cert.pem /etc/ssl/certs/ssl-cert-snakeoil.pem

El primer comando le hará un puñado de preguntas, las respuestas no son tan


importantes en este caso de uso, así que no se preocupe por equivocarse.

Luego ejecute el comando openssl dhparam -out /etc/ssl/certs/dhparam.pem


4096(como root), para generar parámetros Diffie-Hellman para su servidor NGINX,
sin entrar en demasiada jerga, estos se usan en intercambios de claves y deben
ser únicos para su servidor específico por seguridad, puede leer más aquí si tú
estás interesado.

Crea el archivo /etc/nginx/snippets/ssl-params.conf:

ssl_protocols TLSv1.2 TLSv1.3;


ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS-CHACHA20-POLY1305-SHA256:TLS-
AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-
SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-
RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-
SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-
AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_prefer_server_ciphers on;
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# add_header Strict-Transport-Security "max-age=31536000;
includeSubdomains" always;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
ssl_dhparam /etc/ssl/certs/dhparam.pem;

El Strict-Transport-Securityencabezado se comenta aquí porque le causará


problemas importantes si elimina SSL / TLS de cualquier sitio proxy más adelante,
puede habilitarlo después de estar seguro de que todo está funcionando sin
problemas. Al habilitar esta opción, obtiene cierta seguridad contra los intentos de
degradación del protocolo.

Nota: Para un conjunto más compatible de protocolos SSL mientras se mantiene


un nivel de seguridad decente, reemplace las dos primeras líneas del ssl-
params.confarchivo con lo siguiente.

ssl_protocols SSLv3 TLSv1.1 TLSv1.2 TLSv1.3;


ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS-CHACHA20-POLY1305-SHA256:TLS-
AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-
SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-
RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-
SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-
AES128-SHA256:ECDHE-RSA-AES128-SHA256
EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA25
6:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:RC4:!
aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!CAMELLIA';

Ahora necesitamos hacer algunos cambios en los archivos de configuración en


el /etc/nginx/sites-availabledirectorio, esto es con lo que estoy comenzando:

server {
listen 80;
server_name 4t.burns.lab;
location / {
proxy_hide_header X-Powered-By;
proxy_pass_header Authorization;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
proxy_pass http://172.16.44.102:5000;
}
}

Cambiar la listen 80;línea alisten 443 ssl;

Cambie server_namea un nombre de dominio completo (FQDN), este debe ser un


dominio de su propiedad, o un subdominio del mismo, seguido de un espacio y
luego www.+ su FQDN.

Por ejemplo:, server_name mysite.com www.mysite.com;oserver_name


4t.mysite.com www.4t.mysite.com;

Justo después de server_name, agregue las siguientes cinco líneas. Los dos
primeros son para el certificado autofirmado que acabamos de crear, los dos
segundos son para el certificado LetsEncrypt que aún no tenemos, por lo que
están comentados, y la última línea toma el archivo de parámetros SSL que
acabamos de crear.

ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# ssl_certificate /etc/letsencrypt/live/4t.mydomain.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/4t.mydomain.com/privkey.pem;
include /etc/nginx/snippets/ssl-params.conf;

Tenga en cuenta que el FQDN es parte de la ruta de los certificados LetsEncrypt


( 4t.mydomain.comen el ejemplo anterior), debe cambiarlo por su FQDN.

Agregue lo siguiente en la parte superior del archivo para redirigir el tráfico HTTP a
HTTPS:

server {
listen 80;
server_name 4t.mydomain.com www.4t.mydomain.com;
return 301 https://www.4t.mydomain.com$request_uri;
}

Nuevamente, cambie el FQDN por el suyo aquí.

Agregue el siguiente locationbloque al final del serverbloque (encima de la última


llave).

# letsencrypt validation
location '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/html;
}
Cuando solicitas un certificado de LetsEncrypt, su servidor debe asegurarse de
que eres el propietario del dominio para el que estás solicitando un
certificado. Para hacer eso, la herramienta de línea de comandos que usa para
solicitar el certificado obtendrá un token de LetsEncrypt y lo colocará en un archivo
en /var/www/html/.well-known/acme-challenge, luego el servidor de LetsEncrypt
solicitará ese archivo de su FQDN en mysite.com/.well-known/acme-
challengepara verificar el token.

Deberías terminar con algo similar a esto:

server {
listen 80;
server_name 4t.mydomain.com www.4t.mydomain.com;
return 301 https://4t.mydomain.com$request_uri;
}
server {
listen 443 ssl;
server_name 4t.mydomain.com www.4t.mydomain.com;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# ssl_certificate
/etc/letsencrypt/live/4t.mydomain.com/fullchain.pem;
# ssl_certificate_key
/etc/letsencrypt/live/4t.mydomain.com/privkey.pem;
include /etc/nginx/snippets/ssl-params.conf;
location / {
proxy_hide_header X-Powered-By;
proxy_pass_header Authorization;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
proxy_pass http://172.16.44.102:5000;
}
# letsencrypt validation
location '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/html;
}
}

Ejecute el comando nginx -tpara probar la configuración y asegúrese de que todo


esté bien, luego systemctl restart nginxpara cargar los cambios.

LetsEncrypt
Aún en su VM NGINX como root, ejecute apt install -y certbotpara instalar la
herramienta Certbot que usaremos para obtener los certificados LetsEncrypt,
luego haga una "ejecución en seco" con el siguiente comando solo para
asegurarse de que todo esté bien.

certbot certonly --webroot -w /var/www/html -d 4t.mydomain.com -d


www.4t.mydomain.com --dry-run

Se le pedirá que proporcione su dirección de correo electrónico para las alertas de


vencimiento y que acepte los términos del servicio. Las alertas de renovación son
útiles porque si algo sale mal y falla la renovación, se le informará antes de que
haya un problema real.

Si tiene errores, vuelva a consultar el informe DNS de DNSstuff para buscar


cualquier problema.

Si todo funcionó, ejecute el comando Certbot nuevamente pero sin el --dry-runal


final. Ahora que tiene un certificado válido, vuelva a /etc/nginx/sites-
available/4t-app.confpara eliminar las dos líneas de certificado de snakeoil y
descomente las líneas LetsEncrypt. Uno más nginx -ty systemctl restart
nginx, ¡ya está listo y funcionando!

Un último detalle, ejecute el comando systemctl list-timers | grep


certbotpara asegurarse de que el temporizador de renovación automática esté
configurado, debería ver una línea certbot.timeren él.

Una nota sobre los dominios de Apex


¡Aquí tienes otra oportunidad de aprender de mis errores! Notarás que se accede
a este sitio web principalmente como dlford.io(el dominio apex), bueno, una de
mis tareas pendientes es migrar todos mis sitios a subdominios (por
ejemplo www.dlford.io).

En cuanto a por qué, www.yes-www.org tiene una lista muy completa de razones.

Es mucho más fácil implementar esto desde el principio, por lo que le


recomendaría que realice los siguientes cambios en sus configuraciones de
NGINX ahora:

 Cambie la redirección SSL a www


 Agregue un redireccionamiento adicional desde el dominio Apex a www
 Quite el dominio ápice de la server_namedirectiva en el bloque del servidor
principal

Aquí hay un ejemplo completo (tenga en cuenta que aún necesita certificados SSL
tanto para el dominio apex como para el dominio www):

# Forward both apex and www from non-SSL to https://www


server {
listen 80;
server_name mydomain.com www.mydomain.com;
return 301 https://www.mydomain.com$request_uri;
}

# Forward apex SSL to https://www


server {
listen 443 ssl;
server_name mydomain.com;
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
include /etc/nginx/snippets/ssl-params.conf;
return 301 https://www.mydomain.com$request_uri;
}

# No apex in server_name
server {
listen 443 ssl;
server_name www.mydomain.com;
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
include /etc/nginx/snippets/ssl-params.conf;
location / {
proxy_hide_header X-Powered-By;
proxy_pass_header Authorization;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
proxy_pass http://172.16.44.102:5000;
}
# letsencrypt validation
location '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/html;
}
}

Cómo hacer el laboratorio en casa:


Parte 7 - Gestión de registros
 Registro centralizado
 Cómo hacer la serie de laboratorio en casa
 Laboratorio casero

7 de enero de 2020
Tabla de contenido
 Próximos segmentos de la serie "How to Home Lab"
 Nota IMPORTANTE
 Prefacio
 Configuración Base
o VM
o La red
o Instantánea
 Configuración del servidor
o Opción uno: el enfoque simple
o Opción dos - Graylog
 Configuración del cliente
 Recomendaciones de hardware de servidor
o Hardware pfSense dedicado
o Hardware de servidor dedicado
o Mi equipo personalizado

Mantén la calma y pásalo


Si encuentra esto útil, considere compartirlo en las redes sociales para ayudar a correr la voz.

La intención de esta serie es poner en marcha a los nuevos trabajadores


domésticos con un laboratorio doméstico versátil, fácil de mantener y fácil de
mantener, y equiparlos con el conocimiento para administrar y utilizar con
confianza sus sistemas, y eventualmente trabajar hasta el hogar avanzado. redes,
sistemas de alta disponibilidad (HA), redes de área de almacenamiento (SAN),
servidores de correo electrónico y más.

Cómo hacer la serie de laboratorio en casa


Una serie de tutoriales sobre cómo construir un sistema completo de laboratorio en casa desde cero que
sea fácil de usar para principiantes, versátil y de fácil mantenimiento.

Próximos segmentos de la serie "How to Home


Lab"
 Funciones intermedias de Proxmox 1
o Pools, configuración de protección de VM, configuraciones de
almacenamiento, recursos compartidos de Samba
 Funciones intermedias de Proxmox 2
o Gestión de actualizaciones de máquinas virtuales de forma eficiente,
copias de seguridad sin conexión, copias de seguridad de
configuración de Proxmox
 Monitoreo de servicios con Nagios
 Docker / Portainer
 GitLab CI / CD
 Enjambre de Docker
 Kubernetes

Esta lista está sujeta a cambios en cualquier momento, puedo agregar / eliminar /
reordenar los elementos de esta lista en cualquier momento para mantener la
serie coherente y útil.

No se pierda el siguiente segmento: suscríbase a mi lista de correo para


mantenerse actualizado. Y si se queda atascado en algún lugar del camino,
no dude en comunicarse conmigo para obtener ayuda, estaré feliz de ayudar
de cualquier manera que pueda.

Nota IMPORTANTE
Pronto cubriré el proceso de migración de la instancia pfSense del laboratorio
doméstico para que sirva a toda la red doméstica, de modo que podamos hacer un
mejor uso de pfSense y facilitar el acceso a las máquinas virtuales. Esto se hace
mejor con algo de hardware adicional para pfSense, se puede hacer manteniendo
pfSense como una VM, pero no lo recomiendo a menos que tenga un clúster de
hosts Proxmox para habilitar la alta disponibilidad (HA) en la VM pfSense.

Si no tiene ningún hardware adicional pero está dispuesto a hacer algunas


compras, al final de este artículo tendré algunas
recomendaciones. Alternativamente, debería poder dejar todo como está y
continuar con los segmentos futuros con poco o ningún problema, ¡así que no se
preocupe!

Prefacio
Si aprende algo de mí, déjelo que sea la administración de registros, en mi
opinión, esto es lo más importante que puede hacer por seguridad y tiempo de
actividad.

Voy a dar dos opciones para esto, mi preferencia es Graylog, que consume
muchos recursos (recomiendan 4 núcleos y 8GiB de RAM, aunque lo tengo
funcionando en 6GiB en un sistema y parece funcionar bien, pero está usando
algún intercambio y hay una diferencia de rendimiento obvia).

El registro centralizado coloca todos sus registros en un solo lugar y los mantiene
cohesivos, por ejemplo, si restaura un host a partir de una instantánea o copia de
seguridad, aún tendrá todos los registros para consultarlos más adelante si es
necesario. Además, agrega algo de protección contra manipulaciones a sus
sistemas, en caso de un compromiso, será más difícil para el actor malo ocultar
sus huellas si no puede acceder al servidor de registro remoto.

Pero mucho más importante que configurar el registro centralizado es


mirarlo. Asegúrese de al menos hojear todos sus registros con regularidad y
buscar cualquier cosa que le parezca poco familiar (que puede ser mucho cuando
comienza, pero se vuelve mucho más fácil con el tiempo y la práctica).

La detección temprana de problemas es sin duda una de las cosas más


impactantes que puede hacer para mejorar la seguridad y el mantenimiento de sus
sistemas, con un ojo bien entrenado y la atención adecuada puede remediar las
preocupaciones más comunes antes de que se conviertan en un problema real, y
yo puedo ' t enfatice lo suficiente lo valioso que es.

Relacionados Cómo hacer el laboratorio en casa: Parte 2 - Manejo de Proxmox VE

Configuración Base
Vamos a hacer uso de rsyslogambos ejemplos, la diferencia estará en cómo ve
los registros y las funciones adicionales que obtiene de un sistema como Graylog.

VM

Como siempre, comenzaremos aprovisionando una nueva VM, lo llamaré log-


server.
Nota: Si elige instalar Graylog, es posible que deba agregar núcleos de CPU y
RAM adicional, también tuve que agregar algo de espacio en disco, 32GiB debería
ser suficiente.

SSH en la nueva máquina virtual (a través del apservidor en la dirección IP


del pfSenseservidor si ha seguido desde la parte 1), instale las actualizaciones de
software y realice nuestra configuración estándar.

sudo apt update

# See note 1
sudo apt -y dist-upgrade

# See note 2
sudo bash -c "bash <(wget -qO-
https://raw.githubusercontent.com/dlford/ubuntu-vm-
boilerplate/master/run.sh)"

Nota 1: Si obtiene un error al ejecutar actualizaciones sobre "falla al adquirir el


bloqueo", probablemente se deba a actualizaciones desatendidas que se ejecutan
en segundo plano, espere unos minutos y vuelva a intentarlo, o ejecute el
comando watch "ps aux | grep -v grep | grep unattend"para ver si los
procesos terminan (el El proceso unattended-upgrade-shutdownseguirá
ejecutándose, pero puede continuar cuando los demás se hayan detenido).

Nota: 2 Siempre verifique el código fuente antes de ejecutar un script remoto, el


código fuente de mi herramienta de configuración estándar se puede ver aquí .

La red
Inicie sesión en su pfSense VM ( https://IPADDRESS:8080) y diríjase a Servicios>
Servidor DHCP.

Haga clic en el botón Agregar en la parte inferior de la página para agregar una
nueva reserva de dirección IP (Mapeo estático), tenga en cuenta las otras
direcciones IP en uso, en mi caso las usaré 172.16.44.104porque es la siguiente
dirección disponible. Deberá obtener la dirección MAC de la log-serverVM de
Proxmox en Hardware> Dispositivo de red.
Complete los primeros cinco campos del formulario, luego haga clic en Guardar en
la parte inferior y Aplicar cambios.
Recibí el pedido al revés esta vez, generalmente ejecuto el script repetitivo
después de configurar la red, por lo que no es necesario reiniciar la VM por
segunda vez, pero podemos omitir el reinicio adicional con los siguientes
comandos de la log-serverlínea de comandos de la VM para forzar la renovación.
la dirección IP.

ip route
# We're looking for the device name in the
# output which will appear after the word
# "dev" In my case the device name is "ens18"
sudo ip addr flush ens18 && sudo dhclient ens18
# Your SSH session will be terminated after
# running this command, but you can reconnect
# by hostname now (ssh log-server)

Instantánea

Si tiene la intención de probar ambos métodos solo por experimentar, tome una
instantánea aquí para que pueda volver a este punto en lugar de aprovisionar la
máquina virtual nuevamente.
Relacionados Cómo hacer el laboratorio en casa: Parte 4 - Proxy inverso NGINX

Configuración del servidor


Si está utilizando Ubuntu 18.04, ya debería haberlo rsysloginstalado de forma
predeterminada (si el directorio /etc/rsyslog.dexiste, ya está todo listo); de lo
contrario, deberá instalarlo con su administrador de paquetes de distribución (por
ejemplo, para CentOS sudo yum update && sudo yum install rsyslog).

También debe configurarse para iniciarse en el inicio del sistema de forma


predeterminada, puede verificar esto con el comando systemctl status rsyslogy
asegurarse de que la Active:línea se lea active (running), si no se está
ejecutando, use el comando sudo systemctl start rsyslogpara iniciarlo y sudo
systemctl enable rsyslogpara iniciarlo en el momento del inicio.

Opción uno: el enfoque simple

Necesitamos configurar rsyslogpara aceptar mensajes de registro entrantes de


otros hosts. Necesitaremos editar el archivo /etc/rsyslog.confpara lograr
esto. Descomentaremos las cuatro líneas siguientes para habilitar tanto TCP como
UDP.

# provides UDP syslog reception


module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception


module(load="imtcp")
input(type="imtcp" port="514")

Las conexiones TCP son más confiables debido a la verificación de errores y la


entrega garantizada, mientras que UDP es más rápido y usa menos recursos, pero
si los paquetes se descartan, no se recuperarán. La sobrecarga de TCP es
bastante pequeña, pero puede sumarse cuando cada host en su red está
transmitiendo log-servercasi constantemente, y UDP funciona bien en la red
local, por lo que generalmente solo habilito UDP a menos que tenga una situación
que requiera TCP como un host externo conectado a través de un túnel VPN.

Debajo de esas líneas, también agrego lo siguiente para guardar los registros
remotos en su propio archivo para cada host remoto; de lo contrario, todos se
apilarían en el /var/log/syslogarchivo principal con los log-serverregistros '.

$template remote-incoming-logs,"/var/log/%HOSTNAME%-rsyslog.log"
*.* ?remote-incoming-logs
& ~

Reinicie rsyslogpara cargar los nuevos cambios:

sudo systemctl restart rsyslog

Puede hacer todo tipo de trucos ingeniosos sobre cómo y dónde se almacenan los
registros; para obtener más información, consulte man page:
rsyslogd (8): syslogd confiable / extendido - página de manual de
Linux
Rsyslogd es una utilidad del sistema que brinda soporte para el registro de mensajes. La compatibilidad
con sockets de dominio de Internet y Unix permite que esta utilidad admita el registro tanto local como
remoto.

Es posible que también desee configurar logrotatepara archivar, comprimir y,


finalmente, eliminar registros antiguos de hosts remotos, por eso agregué -
rsyslog.loga los nombres de archivo de destino en
el rsyslog.confarchivo. Podríamos crear una nueva configuración con diferentes
parámetros, pero solo usaré el archivo de configuración de syslog existente para
que los registros remotos se traten de la misma manera que los log-
serverregistros del sistema local, agregando la siguiente línea en la parte superior
del archivo /etc/logrotate.d/syslog, arriba la linea /var/log/syslog:

/var/log/*-rsyslog.log

Por supuesto, aquí hay otro man pagesi desea personalizar el comportamiento
de logrotate:

logrotate (8) - página de manual de Linux


logrotate está diseñado para facilitar la administración de sistemas que generan una gran cantidad de
archivos de registro. Permite la rotación, compresión, extracción y ...

Por último, instalaremos la lnavherramienta para ver y buscar registros.

sudo apt install -y lnav

Ahora puede usar el comando lnavpara abrir el local syslogo lnav


/var/log/logfile.logpara abrir cualquier otro archivo de registro. Aquí hay
algunos trucos útiles para navegar con lnav:

CLAVE ACCIÓN
/ Buscar
n/N Ir al resultado de búsqueda siguiente / anterior
g/G Ir a la parte superior / inferior del archivo
e/E Ir al error siguiente / anterior
w/W Ir a la advertencia siguiente / anterior
ctrl +r Recargar (útil para borrar filtros rápidamente)
CLAVE ACCIÓN
: Escribe un comando
? Ayuda abierta

Desde la entrada del comando, suelo usar filter-in some text I want to
seey filter-out some text I want to hide, hay muchos otros beneficios en el
menú de ayuda para revisar, estos son solo los que uso con más frecuencia.

Opción dos - Graylog

Como mencioné, recomiendan 4 núcleos y 8GiB de RAM para ejecutar Graylog, si


tienes el hardware, ¡lo recomiendo mucho! Estas instrucciones se basan en (o en
su mayoría se copian directamente) de la documentación en docs.graylog.org .

Primero, necesitaremos instalar algunas dependencias, algunas de las cuales


pueden ser del repositorio del “universo” de Ubuntu, que no siempre está
habilitado de forma predeterminada, por lo que lo habilitamos primero para estar
seguros.

sudo add-apt-repository universe


sudo apt install -y apt-transport-https openjdk-8-jre-headless uuid-
runtime pwgen

Necesitaremos MongoDB, estos comandos instalarán la última versión del


repositorio oficial de MongoDB.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv


9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu
bionic/mongodb-org/4.0 multiverse" | sudo tee
/etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt update
sudo apt install -y mongodb-org
sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl restart mongod.service

También necesitaremos Elasticsearch, que es lo que le da a Graylog sus poderes


de búsqueda de texto completo.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-


key add -
echo "deb https://artifacts.elastic.co/packages/oss-6.x/apt stable main"
| sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
sudo apt update
sudo apt install -y elasticsearch-oss

Necesitaremos hacer algunos cambios en el


archivo /etc/elasticsearch/elasticsearch.yml, primero anule los
comentarios cluster.namey cambie el valor a graylog, luego agregue la
línea action.auto_create_index: falsejusto debajo de él.
# ------- Cluster --------
#
# Use a descriptive name for your cluster:
#
cluster.name: graylog
#
action.auto_create_index: false

...

Luego, inícielo y configúrelo para que se inicie en el arranque.

sudo systemctl daemon-reload


sudo systemctl enable elasticsearch.service
sudo systemctl restart elasticsearch.service

Y finalmente, el paquete Graylog.

wget https://packages.graylog2.org/repo/packages/graylog-3.1-
repository_latest.deb
sudo dpkg -i graylog-3.1-repository_latest.deb
sudo apt update
sudo apt install -y graylog-server graylog-integrations-plugins

Necesitamos generar un hash de contraseña para el usuario root, los documentos


de Graylog proporcionan este comando para hacerlo:

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' |


sha256sum | cut -d" " -f1

Copie el resultado de ese comando, abra el


archivo /etc/graylog/server/server.confy péguelo en la
línea root_password_sha2 =justo después del =.

También necesitamos un password_secretvalor, que el comentario en el archivo


sugiere que use el comando pwgen -N 1 -s 96para generar este valor. Continúe,
hágalo y péguelo también en el archivo.

También deberá descomentar la línea http_bind_address = ...y cambiar su valor


a0.0.0.0:9000

0.0.0.0:9000significa el puerto 9000 en todas las interfaces de red, en relación


con algo como 172.16.44.104:9000que solo serviría Graylog en la interfaz de red
con esa dirección IP.

Escanee el resto del archivo en busca de cambios de configuración adicionales


que desee hacer, los comentarios están muy bien escritos, por lo que debería
poder comprender la mayoría de las opciones con poca o ninguna búsqueda
(¡gracias al equipo de Graylog!). Luego, inicie Graylog y configúrelo para que se
inicie automáticamente.

sudo systemctl daemon-reload


sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service

A continuación, deberá configurar su servidor NGINX para el tráfico de proxy a


la log-serverVM en el puerto 9000 como hicimos en la parte 4 de esta serie.

Una vez que llegue a la pantalla de inicio de sesión, inicie sesión con el nombre de
usuario adminy la contraseña de root que creó anteriormente.

Dirígete a Sistema> Entradas.


Haga clic en Seleccionar entrada y elija Syslog UDP, luego haga clic en Iniciar
nueva entrada.
Marque la casilla de Global, solo estamos usando un único nodo para esta
configuración, pero estoy seguro de que querríamos que esto esté habilitado para
todos los nodos si tuviéramos un clúster. Complete un título, cambie el puerto a
5514 (debe realizar una configuración adicional para usar puertos privilegiados,
por lo que cualquier cosa por encima de 1024 funcionará bien), los valores
predeterminados están bien para el resto de las opciones, luego haga clic en
Guardar.
Nota: Puede repetir esto para Syslog TCP si lo desea, las conexiones TCP son
más confiables debido a la verificación de errores y la entrega garantizada,
mientras que UDP es más rápido y usa menos recursos, pero si los paquetes se
descartan, no se recuperarán. La sobrecarga de TCP es bastante pequeña, pero
puede sumarse cuando cada host en su red está transmitiendo log-servercasi
constantemente, y UDP funciona bien en la red local, por lo que generalmente solo
habilito UDP a menos que tenga una situación que requiera TCP como un host
externo conectado a través de un túnel VPN.

Por último, haga clic en Mostrar mensajes recibidos, luego haga clic en el menú
desplegable "No actualizando" y elija "1 segundo", y deberíamos verlos comenzar
a aparecer después de configurar nuestro primer cliente en el siguiente paso.

Una vez que recibamos algunos mensajes de registro, querrá crear un panel en la
pestaña "Paneles", puede usar la pestaña "Buscar" para buscar prácticamente
cualquier cosa que desee (consulte los documentos para ver la sintaxis, es
bastante fácil de aprender) y cree widgets de tablero desde allí con puntos de
datos interesantes. Debería dedicar algún tiempo a navegar por la documentación
que está vinculada desde la página principal después de iniciar sesión, Graylog es
una herramienta muy poderosa con toneladas de funciones útiles, ¡no tenga miedo
de experimentar con ella!

Configuración del cliente


Ahora podemos configurar rsyslogen una de sus otras máquinas virtuales, como
antes, asegúrese de que esté instalado en este sistema. Todo lo que tenemos que
hacer es poner un nuevo archivo en el /etc/rsyslog.ddirectorio y
reiniciar rsyslog.

Importante : ¡Cambie el puerto de 514 a 5514 si está utilizando Graylog!

/etc/rsyslog.d/100-log-server.conf

*.* @log-server:514

Asegúrese de poder comunicarse log-servercon el nombre de host desde esta


VM ( ping log-server), también puede usar una dirección IP en su lugar:

*.* @172.16.44.104:514

El nombre del archivo no es importante, siempre que esté en


el /etc/rsyslog.d/directorio y termine en .conf, será leído rsyslogy aplicado.

Le *.*dice rsyslogque transmita todos los registros, pero puede ser realmente
específico si lo desea, consulte el man pageenlace de arriba para obtener más
información.

Entonces simplemente reinicie rsyslog:

sudo systemctl restart rsyslog

Si está utilizando el método simple, ahora debería ver un nuevo archivo en el log-
serverhost con el nombre de host del sistema de envío, en mi
caso /var/log/nginx-rsyslog.log. Que se puede ver ejecutando lnav
/var/log/nginx-rsyslog.log.

Si está utilizando Graylog, debería ver algún resultado ahora (si no, intente volver
a cargar la página y debería obtener algo).

Eso es prácticamente todo lo que hay que hacer, ¡no olvide configurar el resto de
sus hosts para utilizar su nuevo servidor de registro centralizado!

Relacionados Cómo hacer el laboratorio en casa: Parte 3 - Alojar un sitio de


intranet con pfSense y NAT
Recomendaciones de hardware de servidor
Estas son mis recomendaciones para la próxima migración de pfSense a una
nueva máquina.

Si ya está ejecutando Proxmox en hardware sólido, la mini PC Qotom es una


excelente opción. Si desea actualizar su hardware Proxmox y usar su hardware
existente para pfSense, puede optar por un hardware de servidor dedicado (los
evito porque son ruidosos, pero ofrecen algunas características adicionales
excelentes que no encontrará en otro hardware), prácticamente cualquier torre de
PC de escritorio moderna, o una máquina hecha a medida como yo.

Hardware pfSense dedicado

Los consumidores y clientes comerciales apreciarán rápidamente que el Netgate


SG-1100 tiene un gran impacto con la edición de fábrica del software pfSense®,
precio-rendimiento de clase mundial, empaque elegante y un precio bajo
inmejorable. Disponible en Amazon.

Si aún no tiene uno, le recomiendo encarecidamente un Qotom Q355G4 para


pfSense, el mío ha sido fantástico y es bastante ligero en el uso de energía
(alrededor de 10 vatios en promedio). Disponible en Amazon.

Hardware de servidor dedicado

HP ProLiant DL360 G7 combina rendimiento, administración inteligente de energía


y enfriamiento con herramientas de administración de TI y tolerancia a fallas
esencial, todo optimizado para instalaciones con limitaciones de
espacio. Disponible en Amazon.

El HPE ProLiant MicroServer Gen10 ofrece un servidor de nivel de entrada


compacto y asequible diseñado específicamente para pequeñas oficinas, oficinas
en el hogar o entornos de pequeñas empresas. Disponible en Amazon.

Mi equipo personalizado

El procesador AMD Ryzen Threadripper está diseñado para proporcionar una


supremacía de multiprocesamiento indiscutible en la plataforma definitiva X399
para escritorio. Disponible en Amazon.

 Una placa base X399 (tengo el ASRock Taichi, no tengo quejas, quería el
GigaByte Designaire pero estaban agotados en ese momento).
 64 GiB de RAM DDR4 (¡tal vez opte por 128 si puede pagarlo!)
 Un enfriador de CPU Noctua NH-U14S TR4-SP3
 Un par de SSD para la matriz OS RAID1
 Cuatro discos duros WD de 2TB para datos de VM en una matriz RAID10
 Una carcasa de PC ATX (asegúrese de que pueda caber en el enfriador de
CPU alto, estoy usando el Rosewill HIMARS descontinuado para sus cuatro
bahías de unidades de intercambio en caliente, ¡es una pena que ya no las
fabriquen!
 Un puñado de ventiladores Noctua de 120 mm
 Una tarjeta de video de gama baja ya que Threadripper no tiene gráficos
integrados
 Una fuente de alimentación de 1000 vatios (esto es excesivo, ¡pero es
bueno tener espacio para la cabeza!)
 Algunos cables SATA III para conexiones de unidades

How to Home Lab: Parte 8 -


Introducción a Docker: instalación y
uso.
 Estibador
 Laboratorio casero
 Cómo hacer la serie de laboratorio en casa

19 de febrero de 2020

Tabla de contenido
 Próximos segmentos de la serie "How to Home Lab"
 Nota IMPORTANTE
 Que es Docker
o ¿Qué es Docker-Compose?
o Que es Portainer
 Instalación
o Agregar espacio en disco
o Instalar Docker
o Instalar Docker-Compose
o Instalar Portainer
 Uso
o CLI
o Dockerfile
o Docker-Compose

Mantén la calma y pásalo


Si encuentra esto útil, considere compartirlo en las redes sociales para ayudar a correr la voz.

La intención de esta serie es poner en marcha a los nuevos trabajadores


domésticos con un laboratorio doméstico versátil, fácil de mantener y fácil de
mantener, y equiparlos con el conocimiento para administrar y utilizar con
confianza sus sistemas, y eventualmente trabajar hasta el hogar avanzado. redes,
sistemas de alta disponibilidad (HA), redes de área de almacenamiento (SAN),
servidores de correo electrónico y más.

Cómo hacer la serie de laboratorio en casa


Una serie de tutoriales sobre cómo construir un sistema completo de laboratorio en casa desde cero que
sea fácil de usar para principiantes, versátil y de fácil mantenimiento.

Próximos segmentos de la serie "How to Home


Lab"
 Recorrido por las funciones de Proxmox y algunos consejos adicionales
 Monitoreo de servicios con Nagios
 GitLab CI / CD
 Enjambre de Docker
 Kubernetes

Esta lista está sujeta a cambios en cualquier momento, puedo agregar / eliminar /
reordenar los elementos de esta lista en cualquier momento para mantener la
serie coherente y útil.

No se pierda el siguiente segmento: suscríbase a mi lista de correo para


mantenerse actualizado. Y si se queda atascado en algún lugar del camino,
no dude en comunicarse conmigo para obtener ayuda, estaré feliz de ayudar
de cualquier manera que pueda.

Nota IMPORTANTE
Pronto cubriré el proceso de migración de la instancia pfSense del laboratorio
doméstico para que sirva a toda la red doméstica, de modo que podamos hacer un
mejor uso de pfSense y facilitar el acceso a las máquinas virtuales. Esto se hace
mejor con algo de hardware adicional para pfSense, se puede hacer manteniendo
pfSense como una VM, pero no lo recomiendo a menos que tenga un clúster de
hosts Proxmox para habilitar la alta disponibilidad (HA) en la VM pfSense.

Si usted no tiene ningún tipo de hardware adicional, pero está con ganas de hacer
un poco de compras, tengo algunas recomendaciones aquí .

Que es Docker
Docker es una herramienta de contenedorización, antes de entrar en todo eso,
primero hablemos un poco sobre cómo funciona la virtualización, solo para
expresar las diferencias con la contenedorización.

Con la virtualización, usamos un hipervisor en el sistema operativo (como lo


estamos haciendo con Proxmox, que usa el hipervisor KVM de Linux). El
hipervisor crea una "máquina virtual", ya que proporciona RAM virtual, núcleos de
CPU, discos duros, interfaces de red y otro hardware. Instalamos encima de esa
máquina virtual un sistema operativo (y kernel, que es el software que se
comunica con el hardware y se considera el "núcleo" del sistema operativo).

VirtualOperating
SystemVirtualKernelVirtualMachinePhysicalHardwareHypervisorHostOperating
SystemHostKernelVirtualOperating
SystemVirtualKernelVirtualMachineNetworkVirtual HardwareVirtual Hardware

Docker, por otro lado, no virtualiza nada en absoluto. El kernel y el hardware se


comparten con la máquina host (o VM host en nuestro caso, que está virtualizada,
pero ignoremos ese hecho por ahora). Estos recursos, por supuesto, están en un
espacio aislado para mantenerlos separados de la máquina host, pero son las
metodologías las que distinguen a Docker, estos son algunos de los componentes
conceptuales básicos:

 Imágenes: una imagen de Docker es como una instantánea de un


contenedor, contiene el software y el sistema de archivos. Las imágenes
son inmutables, lo que significa que no se pueden modificar, pero puede
iniciar un contenedor a partir de él para realizar cambios y confirmar ese
contenedor como una nueva imagen.
 Contenedores: un contenedor es un estado ejecutable, cuando "ejecuta"
una imagen, se ejecuta como contenedor, se separa de la imagen
original. Los contenedores generalmente se consideran prescindibles a
menos que esté armando una nueva imagen. Esto puede parecer contrario
a la intuición, pero verá por qué es tan poderoso más adelante.
 Volúmenes: un volumen es para el almacenamiento persistente de
archivos, considérelo como una unidad externa para un
contenedor. También puede enlazar montar un directorio en la máquina
host en un contenedor como volumen.
 Redes: Docker usa redes privadas internas para contenedores de forma
predeterminada en lugar de darles interfaces de red virtual en la red
externa, sin embargo, puede "exponer" puertos en el contenedor desde el
host de la ventana acoplable.

Conmigo hasta ahora? Otro concepto importante es el uso de variables de entorno


para cualquier configuración específica de la instancia, la imagen debe verificar las
variables de entorno relevantes que pueda utilizar y volver a los valores
predeterminados. Sin embargo, ¿qué pasa con esos contenedores prescindibles?

En un entorno de producción, tendría un contenedor generado a partir de una


imagen, con volúmenes que almacenan sus datos persistentes y detalles de
configuración en variables de entorno. Cuando desee realizar cambios, cree una
nueva imagen, ahora puede probar la nueva imagen en un entorno de ensayo con
la misma configuración y tal vez algunos datos simulados, luego simplemente
borre el contenedor de producción en ejecución y genere un nuevo contenedor del
nuevo imagen. Esto es realmente genial, porque su entorno de ensayo puede
coincidir con la producción exactamente para realizar pruebas precisas, ¡y la
actualización de la producción es casi instantánea!

Mejor aún, puede crear su imagen a partir de una imagen preexistente desde el
concentrador de Docker, sin necesidad de ejecutar ninguna instalación de sistema
operativo u otro aprovisionamiento.

PhysicalHardwareDocker DaemonHostOperating SystemHostKernelDocker


ImageDocker ContainerDocker NetworksDocker VolumesDocker ImageDocker
ContainerDocker NetworksDocker VolumesNetwork

Un concepto más importante: un contenedor en ejecución ejecuta un comando


cuando se inicia, si ese comando termina, el contenedor se detiene. Esto también
es muy útil con la configuración de la política de reinicio de Docker, si su
aplicación falla, Docker la reiniciará automáticamente si está configurado para
hacerlo.

La mayor parte de esto se puede configurar en la línea de comandos o en un


"Dockerfile", que es un archivo que contiene instrucciones sobre cómo Docker
debe construir una imagen.

Entraremos en la creación de imágenes y las sacaremos del centro de Docker que


se encuentra debajo, primero tengo algunas cosas más que explicar.

Relacionados Cómo hacer el laboratorio en casa: Parte 2 - Manejo de Proxmox VE

¿Qué es Docker-Compose?
Si Docker es una herramienta para ejecutar contenedores, la mejor manera de
explicar Docker-compose es una herramienta para ejecutar varios
contenedores. También proporciona más opciones de configuración que un
Dockerfile, como adjuntar volúmenes con nombre o bind-mounts, o redes con
nombre, y lo más importante, conectar varios contenedores a la misma red.

Que es Portainer

Portainer es una bonita interfaz web para Docker. En general, cubriré el uso de la
línea de comandos en este segmento, pero Portainer es bastante fácil de entender
una vez que comprenda el propio Docker. Si eres un aprendiz visual, esta será
una herramienta útil para ti.

Instalación
Como de costumbre, querremos crear una nueva máquina virtual y hacer todas las
configuraciones estándar, las omitiré aquí, pero puede consultar la parte 5 (no
olvide aumentar la memoria RAM y el recuento de CPU).

Agregar espacio en disco

Le he mostrado cómo agregar un nuevo "disco" y combinarlo con un volumen


lógico, pero esta vez hagamos crecer el disco existente, aumentaré el mío a
32GiB, que debería ser adecuado para nuestras necesidades aquí.

Comience por ir a la pestaña de hardware de la VM en Proxmox, seleccione el


disco duro, luego haga clic en el botón "Cambiar tamaño de disco" en la parte
superior, el número que elija se agregará al tamaño existente.

Luego, SSH en la nueva VM. Necesitamos asegurarnos de que el sistema sea


consciente del nuevo tamaño del disco, la forma más fácil de hacer esto en mi
experiencia sin reiniciar es con parted.

sudo parted /dev/sda

Si no lo tienes instalado, sudo apt install -y parted.

Escriba ppara imprimir la tabla de particiones actual, y debería aparecer este


mensaje:

Warning: Not all of the space available to /dev/sda appears to be used,


you can fix the GPT to use all of the space
(an extra 50331648 blocks) or continue with the current setting?
Fix/Ignore? fix

Escriba fix, luego qpara salir parted.


Podría hacer el siguiente paso parted, pero prefiero usarlo, fdiskya que los
cambios se almacenan en la memoria hasta que le diga que los aplique, es un
poco más seguro.

sudo fdisk /dev/sda

Escriba ppara imprimir la tabla actual, debería tener algo como esto:

Command (m for help): p


Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: E32F132B-3FFE-4657-B64A-DD6D8F88ED62

Device Start End Sectors Size Type


/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2101247 2097152 1G Linux filesystem
/dev/sda3 2101248 16775167 14673920 7G Linux filesystem

Vamos a eliminar la partición 3 y volver a crearla con un tamaño más grande (¡que
no cunda el pánico!). Tenga en cuenta que la partición 3 comienza en el sector
2101248, y su tipo es "sistema de archivos Linux", queremos asegurarnos de que
no cambien.

Escriba dpara eliminar una partición, luego presione enter para seleccionar la
partición 3 que debería ser la predeterminada, luego npara crear una nueva
partición e ingrese tres veces para seleccionar los valores predeterminados (solo
asegúrese de que sea el mismo número de partición y sector de inicio que estaba
antes de).

Command (m for help): d


Partition number (1-3, default 3):

Partition 3 has been deleted.

Command (m for help): n


Partition number (3-128, default 3):
First sector (2101248-67108830, default 2101248):
Last sector, +sectors or +size{K,M,G,T,P} (2101248-67108830, default
67108830):
Created a new partition 3 of type 'Linux filesystem' and of size 31 GiB.

Luego se le preguntará si desea eliminar la firma del sistema de archivos


existente, elija no aquí .

Partition #3 contains a LVM2_member signature.

Do you want to remove the signature? [Y]es/[N]o: n

Escriba puna vez más para verificar que todo se vea bien, luego wqescriba los
cambios en el disco y salga fdisk.
Command (m for help): p

Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors


Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: E32F132B-3FFE-4657-B64A-DD6D8F88ED62
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 2101247 2097152 1G Linux filesystem
/dev/sda3 2101248 67108830 65007583 31G Linux filesystem

Command (m for help): wq


The partition table has been altered.
Syncing disks.

Debería ver este mensaje:

The partition table has been altered.


Syncing disks.

Si recibe una advertencia acerca de que el disco está en uso, use el


comando partprobe /dev/sdapara forzar la resincronización de la tabla de
particiones activa.

A continuación, necesitamos hacer crecer el volumen físico LVM, con el


comando sudo pvresize /dev/sda3, debería ver:

Physical volume "/dev/sda3" changed


1 physical volume(s) resized / 0 physical volume(s) not resized

Luego corra sudo lvspara ver el nombre de su grupo de volumen y volumen


lógico, en mi caso ubuntu-vgy ubunut-lv, respectivamente.

Ejecutar sudo lvresize -l +100%FREE /dev/ubuntu-vg/ubuntu-lvpara ampliar el


volumen lógico.

Size of logical volume ubuntu-vg/ubuntu-lv changed from 4.00 GiB (1024


extents) to <31.00 GiB (7935 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.

Finalmente, el comando sudo resize2fs /dev/ubuntu-vg/ubuntu-lvextenderá el


sistema de archivos al nuevo tamaño.

Relacionados Cómo hacer el laboratorio en casa: Parte 4 - Proxy inverso NGINX

Instalar Docker

Estas son las instrucciones de instalación recomendadas de docs.docker.com :

sudo apt install -y apt-transport-https \


ca-certificates curl gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

sudo apt update

sudo apt install docker-ce docker-ce-cli containerd.io

Si desea poder ejecutar Docker como un usuario no root, debe agregar su usuario
al grupo "docker" ejecutando el comando sudo usermod -aG docker
YOURUSERNAME(tendrá que cerrar la sesión y luego volver a iniciarla para que el
cambio surta efecto) . Tenga en cuenta que este es un riesgo de seguridad, ya
que le otorga a su usuario acceso de root sin contraseña a la máquina virtual host.

Instalar Docker-Compose

Nuevamente desde el sitio de documentación de Docker :

sudo apt install -y curl

sudo curl -L
"https://github.com/docker/compose/releases/download/1.25.3/docker-
compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

Instalar Portainer

Los siguientes comandos lo pondrán en funcionamiento con todas las campanas y


silbidos habilitados:

docker pull portainer/portainer


docker volume create portainer_data

docker run -d --name portainer_gui \


--restart always \
-e "CAP_HOST_MANAGEMENT=1" \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
-v /:/host \
portainer/portainer

Nota: Después de configurar un nombre de usuario y una contraseña en el menú


Usuarios en http://IPADDRESS:9000, diríjase a Endpoints> local y configure la IP
pública en la dirección IP del host (o el nombre del host si está configurado con
DNS en su red), así que cuando haga clic en los enlaces publicados puertos en la
lista de contenedores abre la URL correcta.

Uso
Ahora podemos profundizar en él, comenzar por ejecutar docker
versiony docker-compose versionasegurarnos de que se hayan instalado
correctamente.

No cubriré todos los comandos posibles aquí, recomiendo echar un vistazo a


la documentación de la CLI de Docker cuando haya terminado aquí.

Relacionados Cómo hacer el laboratorio en casa: Parte 3 - Alojar un sitio de


intranet con pfSense y NAT

CLI

Comencemos simplemente girando un contenedor de Fedora:

docker run -it fedora:latest /bin/bash

Este comando significa que queremos runun contenedor de la


imagen fedora:latest, lo -itmismo que -i -t) significa que queremos que
ejecute un TTY interactivo. La -ibandera es para "interactivo", para mostrar la
salida en nuestra línea de comandos, y la -tbandera es para "TTY", que nos
permite escribir comandos en el contenedor desde nuestra terminal. Por
último, /bin/bashes el comando que ejecutaremos dentro del contenedor.

Ahora ha iniciado sesión en un nuevo contenedor de Fedora como usuario root


que ejecuta una sesión bash, no hay mucho que hacer aquí ya que es solo un
contenedor vacío, escriba exitpara salir del contenedor.

El comando docker psmostrará una lista de contenedores en ejecución, notará


que solo Portainer se está ejecutando, nuestro contenedor Fedora se ha detenido
desde /bin/bashque salió el comando con el que se inició.

Intente ejecutar docker container list -apara mostrar todos los contenedores
en ejecución y detenidos, encontrará el contenedor de Fedora allí, se le ha dado
un nombre aleatorio ya que no especificamos uno. deshagámonos de éste
con docker container rm CONTAINER_NAME.

Otro buen truco, si hubiera ejecutado el comando docker run --rm -it
fedora:latest /bin/bash, la --rmbandera significa "Retire el contenedor cuando
se detenga", lo que facilita la limpieza.
La ejecución docker image listle mostrará qué imágenes tiene en el sistema,
hasta ahora tenemos portainer/portainer:latest, y fedora:latest. En el caso
de Portainer, la imagen tiene una organización de portainery una imagen
nombrada portainer, por lo tanto portainer/portainer, y en ambos casos, la
imagen está etiquetada latest, pero hay muchas otras etiquetas (piense en las
etiquetas de manera similar a las versiones), pero latestes la predeterminada si
no especifique una etiqueta.

Puede encontrar imágenes listas para usar para toneladas de software en Docker
Hub , intente buscar Fedora allí y vea qué etiquetas están disponibles.

Ahora intentemos el montaje de enlaces, primero cree un archivo JavaScript en el


directorio actual:

hello.js

console.log('hello world')

Luego ejecute el comando docker run --rm -it -v "${PWD}:/app" node:10-


alpine /usr/local/bin/node /app/hello, la -vbandera especifica un volumen,
estamos montando ${PWD}(que se resuelve en su directorio de trabajo actual) en el
host al /appcontenedor.

Luego, el comando se ejecuta node /app/hellodentro del contenedor, lo que le


dice a NodeJS que ejecute el /app/hello.jsarchivo (desde nuestro directorio de
trabajo a través de bind-mount). Tomará un minuto descargar la node:10-
alpineimagen, luego debería ver "hola mundo" impreso en la terminal antes de
que finalice el proceso y el contenedor se detenga. Ejecutar esto nuevamente
debería ser mucho más rápido ahora, ya que la imagen ya se descargó desde
Docker Hub.

Es una práctica común especificar la ruta completa del comando a ejecutar (por
ejemplo, en /usr/local/bin/nodelugar de node), encontré esa ruta
ejecutando docker run --rm -it node:10-alpine which node.

Alpine Linux se usa comúnmente en Docker porque está diseñado para ser de
tamaño muy pequeño, Alpine logra su tamaño pequeño solo con un pequeño
conjunto de herramientas de línea de comandos.

Un último comando útil es docker exec -it CONTAINER_NAME /bin/bash, que lo


lleva a una sesión bash de un contenedor en ejecución, tenga en cuenta que en
Alpine Linux debe usar en shlugar de bash, y esto no funcionará en algunas
imágenes como Portainer porque se envía sin un shell.

Dockerfile
Vamos a llevarlo a un nivel superior ahora, cree un archivo en su directorio de
trabajo:

Dockerfile

FROM alpine:latest

RUN apk update && \


apk add --no-cache git perl && \
cd /tmp && \
git clone https://github.com/jasonm23/cowsay.git && \
cd cowsay ; ./install.sh /usr/local && \
rm -rf /var/cache/apk/* /var/tmp/* /tmp/* && \
apk del git
CMD [ "/usr/local/bin/cowsay", "I am a Docker cow!" ]

El RUNcomando aquí es un poco complejo, está instalando gity perl, clonando


el cowsayrepositorio, instalándolo, eliminan todo el software innecesario y los
archivos de caché para ahorrar espacio. Los comandos también están todos
encadenados en uno para reducir el número de capas en la imagen final (cada
línea en el Dockerfile es una nueva capa).

la CMDlínea se proporciona como una matriz separada por espacios, por lo que el
comando real que se ejecutará en el contenedor es /usr/local/bin/cowsay "I am
a Docker cow!".

Ahora podemos ejecutar el comando docker build -t mycoolapp:mytag .para


construir la imagen mycoolappcon la etiqueta mytagusando el directorio actual ( .).

Si ejecutamos el comando docker run --rm mycoolapp:mytag, debería ver una


vaca ordenada entregando su mensaje declarando su Docker-ness. Si bien esto
no es tan útil, con suerte, está comenzando a ver algunas de las cosas que hacen
de Docker una herramienta tan poderosa.

Sin embargo, esto apenas rasca la superficie, puede copiar archivos en la imagen,
declarar volúmenes, incluso compilar su aplicación en un contenedor y luego
pasar la compilación terminada a un contenedor nuevo, todo en el mismo
Dockerfile. Te dejo con la referencia de Dockerfile para que la revises también.

Docker-Compose

¡Aquí es donde se vuelve realmente divertido! Vamos a presentar un rastreador de


problemas rápido y sucio que preparé para otro artículo para demostrar cuán
portátiles son las aplicaciones Dockerized, será lo más fácil que haya hecho en
todo el día.

Primero, descargue el código fuente ejecutando git clone


https://github.com/dlford/example-cloud-native-fullstack-nextjs.git,
luego cd example-cloud-native-fullstack-nextjs.
Corre docker-compose up, luego siéntate y observa cómo se crean cuatro
contenedores; una base de datos MongoDB, un servidor API GraphQL, un
servidor frontend NextJS y un servidor proxy inverso NGINX para unir
todo. ¡Hicimos todo eso en solo tres comandos! Continúe y apunte su navegador
web http://IP_ADDRESS_OF_DOCKER_VM:3000para verificarlo. (Pulsa ctrl+ ccuando
quieras apagarlo todo).

Nota: Las imágenes, los volúmenes y las redes están todavía en el sistema, si
desea eliminarlos puede ejecutar docker-compose down --rmi local --
volumesdesde el directorio del proyecto, o docker container prune, docker image
prune, docker volume prune, y docker network prune, lo que eliminará cualquier
recipiente, la imagen, el volumen y la red que ISN' t funcionando o en uso.

¿Cómo funcionó todo eso, podrías preguntar? Aquí está su tarea: pondré el
archivo Docker-Compose abajo, puede parecer bastante largo, ¡pero solo
configuramos cuatro sistemas en esas 60 líneas de configuración! Vea si puede
descifrar lo que hace cada línea. La documentación debe tener toda la información
necesaria para hacer referencia.

Si desea saber cómo creé esta aplicación de seguimiento de problemas, puede


leer todo al respecto aquí .

docker-compose.yml

version: '3.7'

services:
db_prod:
volumes:
- type: volume
source: db-data_prod
target: /data/db
- type: volume
source: db-config_prod
target: /data/configdb
networks:
net1:
aliases:
- db
build:
context: ./db
dockerfile: Dockerfile
server_prod:
depends_on:
- db_prod
build:
context: ./server
dockerfile: Dockerfile
environment:
- DATABASE_URL=mongodb://db:27017/cloud-native-next
- PORT=3000
networks:
net1:
aliases:
- server
client_prod:
depends_on:
- server_prod
build:
context: ./client
dockerfile: Dockerfile
networks:
net1:
aliases:
- client
nginx_prod:
depends_on:
- server_prod
- client_prod
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- '3000:3000'
networks:
net1:
aliases:
- nginx
networks:
net1:
name: cloud-native-next
volumes:
db-data_prod:
db-config_prod:

Cómo hacer el laboratorio en casa:


Parte 9 - Expandiendo su red
doméstica
 Cómo hacer la serie de laboratorio en casa
 Redes
 pfSense

14 de julio de 2020

Tabla de contenido
 Próximos segmentos de la serie "How to Home Lab"
 Introducción
 Prepare los medios de instalación
 Provisión pfSense
o VLAN
 Migración
 Módem puente

Mantén la calma y pásalo


Si encuentra esto útil, considere compartirlo en las redes sociales para ayudar a correr la voz.

La intención de esta serie es poner en marcha a los nuevos trabajadores


domésticos con un laboratorio doméstico versátil, fácil de mantener y fácil de
mantener, y equiparlos con el conocimiento para administrar y utilizar con
confianza sus sistemas, y eventualmente trabajar hasta el hogar avanzado. redes,
sistemas de alta disponibilidad (HA), redes de área de almacenamiento (SAN),
servidores de correo electrónico y más.

Cómo hacer la serie de laboratorio en casa


Una serie de tutoriales sobre cómo construir un sistema completo de laboratorio en casa desde cero que
sea fácil de usar para principiantes, versátil y de fácil mantenimiento.

Próximos segmentos de la serie "How to Home


Lab"
 Monitoreo de servicios con Nagios
 Docker / Portainer
 GitLab CI / CD
 Enjambre de Docker
 Kubernetes

Esta lista está sujeta a cambios en cualquier momento, puedo agregar / eliminar /
reordenar los elementos de esta lista en cualquier momento para mantener la
serie coherente y útil.

No se pierda el siguiente segmento: suscríbase a mi lista de correo para


mantenerse actualizado. Y si se queda atascado en algún lugar del camino,
no dude en comunicarse conmigo para obtener ayuda, estaré feliz de ayudar
de cualquier manera que pueda.
Introducción
¡Hola de nuevo! Ha pasado un tiempo desde mi último artículo, pero todavía estoy
en eso, espero que haya tenido tiempo de adquirir algo de hardware para su
instancia de pfSense, en este segmento estaremos moviendo pfSense al borde de
su red para realizar un toneladas de beneficios que solo son posibles en esta
configuración.

¿Por qué? Bueno, si todavía está aquí, entonces está claramente involucrado en
este esfuerzo, por lo que es hora de llevarlo al siguiente nivel asumiendo la plena
propiedad de su red doméstica. Este es, en mi opinión, un compromiso demasiado
grande para haberte puesto al principio de la serie, hubiera sido más fácil hacerlo
primero, pero mucho más difícil de limpiar si hubieras decidido que no era para
ti. Un laboratorio doméstico es más que un servidor, involucra a toda la red.

Necesitará al menos una máquina para ejecutar pfSense con dos o más interfaces
de red, una memoria USB vacía, y recomiendo encarecidamente un conmutador
administrado de capa 2 con soporte VLAN (una opción asequible para comenzar
sería un Netgear GS308T), un estándar Se podría usar un enrutador o un
conmutador no administrado en su lugar, pero no un dispositivo combinado de
módem / enrutador porque queremos todo detrás de pfSense. También querrá un
enrutador WiFi dedicado para poner detrás de pfSense.

IMPORTANTE: si está utilizando su módem como un enrutador WiFi, omita


este segmento, no funcionará correctamente con pfSense y será inseguro si
conecta su módem.

A continuación, se muestran tres de los muchos diseños físicos posibles de la red,


del más deseable al menos. En este sentido, "Dispositivos" significa Proxmox,
estaciones de trabajo, su tostadora o cualquier otra cosa. Lo importante es
que solo pfSense se conecta directamente al módem.

WiFiDevicesModempfSenseSwitchModempfSenseWiFiDevicesModempfSenseWi
FiDevices

Prepare los medios de instalación


Comenzaremos haciendo una copia de seguridad de la instalación actual de
pfSense, diríjase a Diagnóstico> Copia de seguridad y restauración> Descargar
configuración como XML (¡no use cifrado para este!).

A continuación, necesitaremos un instalador nuevo para pfSense y una memoria


USB, diríjase a la página de descarga de pfSense y elija la arquitectura adecuada
(AMD64, a menos que tenga hardware oficial de Netgate), y "USB Memstick
Installer" para la opción de instalación, y “VGA” para la consola.
Si está en Mac o Linux, puede usar el ddcomando para grabar el instalador en su
memoria USB, para Windows recomiendo Balena Etcher.

Notas: Es posible que el nombre de archivo del instalador haya cambiado desde el
momento de la escritura, y asegúrese de poner la ruta de disco correcta para su
unidad USB en lugar de /dev/sdXX, puede enumerar los discos disponibles con el
comando lsblk.

sudo dd \
if=pfSense-netgate-memstick-vga-2.4.5-RELEASE-p1-amd64.img \
of=/dev/sdXX \
bs=4M

Una vez hecho esto, debe tener una partición FAT32 en la memoria USB, copiar la
copia de seguridad de su configuración en esa partición y cambiarle el
nombre config.xml, podemos restaurar la configuración durante la instalación con
este archivo.

Relacionados How to Home Lab: Parte 8 - Introducción a Docker: instalación y


uso.

Provisión pfSense
Hemos realizado una instalación antes, y esto no debería ser muy diferente, pero
debería ver una opción para restaurar la configuración config.xmldurante la
instalación, elija sí aquí.

Después de la instalación, debes conectar una computadora al puerto LAN y


conectarte a la interfaz web y asegurarte de que todo se vea kosher, luego
continúa y conecta el puerto WAN a tu módem.

VLAN

¿Qué es una VLAN? Significa red de área local virtual, puede pensar en ella como
una red separada. Aunque tendrá todos sus dispositivos conectados a la misma
red física, los dispositivos en diferentes VLAN deberán comunicarse a través del
firewall pfSense, lo que permitirá un control mucho mejor sobre las reglas de la
red.

¿Quizás no quiere que sus compañeros de casa tengan acceso a sus máquinas
virtuales? Fácil, simplemente colóquelos en su propia VLAN, asigne a su máquina
una reserva DHCP en la red LAN y cree una regla de firewall para permitir que
solo esa dirección IP se comunique con la VLAN con sus VM en ella. ¿Qué tal una
VLAN separada para sus hijos (o quien sea) que bloquea ciertos sitios web o
bloquea Internet completamente fuera de las horas designadas? Todo eso se
puede hacer con pfSense y VLAN.
Si no tiene un conmutador VLAN administrado, puede omitir esta parte, pero si lo
hace, sería mejor crear una nueva interfaz VLAN en pfSense para sus servidores y
dejar la red LAN para su estación de trabajo, tal vez agregar algunas VLAN para
su Dispositivos WiFi o IoT para mantenerlos separados. Deberá copiar sus reglas
de LAN a la VLAN del servidor. También hice una VLAN "DMZ" para las VM que
están expuestas a Internet y reglas específicas sobre cómo pueden comunicarse
con las otras VM en mi VLAN de "producción". ¿Entonces cómo hacemos eso?

En pfSense, diríjase a Interfaces> Asignaciones, luego haga clic en la pestaña


VLAN, luego en el signo más para agregar una nueva VLAN. Elija el dispositivo
principal (el puerto LAN, que se conectará a su conmutador más adelante), un
número de etiqueta de VLAN, usaré 11 para este ejemplo (aunque no use la VLAN
1, es la VLAN predeterminada en la mayoría de los conmutadores, y, por lo tanto,
es vulnerable a los saltos de VLAN). Por lo general, dejo la Prioridad de VLAN en
blanco porque no utilizo ninguna configuración de tráfico en las VLAN y le doy una
descripción.

De vuelta a la pestaña "Asignaciones de interfaz", podemos seleccionar la nueva


VLAN junto a "Puertos de red disponibles" y hacer clic en el botón
Agregar. Aparecerá ahora como OPT1, si hace clic en la pestaña de interfaces
nuevamente y luego en OPT1, puede cambiar el nombre a algo como "Prod", o lo
que quiera. Continúe y asigne un espacio de direcciones IPv4 para esta VLAN, y
no hay necesidad de una puerta de enlace, ya que pfSense será la puerta de
enlace para esta VLAN.

A continuación, diríjase a Servicios> Servidor DHCP y elija la pestaña para la


nueva VLAN que cambió de nombre, solo necesitamos habilitar DHCP y configurar
el rango del grupo de direcciones. Luego diríjase a Firewall> Reglas, y
simplemente agregue y permita cualquier regla por ahora, puede ajustarla según
sea necesario más adelante.

Ahora podemos conectar el conmutador a su estación de trabajo y


configurarlo. Dado que hay tantos fabricantes y marcas, todos son diferentes,
algunos son de línea de comandos, otros tienen una GUI web, pero si comprende
los conceptos, solo necesita buscar los comandos o menús específicos para
configurarlo. El Netgear GS308T que recomendé tiene una GUI bastante decente,
las configuraciones relevantes aquí están en Conmutación> VLAN.

Solo cubriré los conceptos básicos para mantener esto conciso, lo principal que
necesita saber es etiquetado versus no etiquetado. Supongamos que tiene un
paquete de datos de Internet procedente de pfSense destinado a un host en la
VLAN 11, este paquete está "etiquetado" para la VLAN 11, el conmutador ve la
etiqueta y la compara con su propia tabla de VLAN para determinar dónde enrutar
el tráfico. eso es bastante fácil. El tráfico no etiquetado es solo eso, no tiene
etiqueta.
Desde el punto de vista del conmutador, puede tener puertos etiquetados y sin
etiquetar; de manera predeterminada, todos los puertos generalmente están sin
etiquetar en la VLAN 1. Si una VLAN no está etiquetada en un puerto, eso significa
que todo el tráfico que entra o sale de ese puerto no está etiquetado. pasará por
esa VLAN. Si una VLAN está etiquetada en un puerto, el tráfico etiquetado para
esa VLAN se permitirá a través del puerto. Si una VLAN no está etiquetada o no
etiquetada en un puerto, no se permitirá que el tráfico de esa VLAN pase a través
del puerto, sino que se enrutará a través de pfSense.

Entonces, para nuestro ejemplo, digamos que tenemos el puerto 1 en el


conmutador como el enlace ascendente a pfSense, y queremos que el puerto 2 se
trate por completo como su propia red en la VLAN 11, necesitamos realizar los
siguientes cambios:

 Quite la VLAN 1 sin etiquetar del puerto 2


 Agregue la VLAN 11 sin etiquetar al puerto 2
 Agregue la VLAN 11 etiquetada al puerto 1

Ahora, el tráfico para un host en la VLAN 11 se puede pasar desde cualquier


puerto LAN a través del puerto 1 a pfSense, que etiquetará los paquetes para la
VLAN 11 (según la dirección IP de destino) y los enviará de regreso a través del
puerto 1 en el conmutador, que dirigirá el tráfico desde el puerto 2 al host, y el
tráfico que se origina en el puerto 2 será etiquetado para VLAN 11 por el
conmutador cuando pase, volviendo a pfSense en la interfaz VLAN 11 (ya que
solo el puerto 1 está etiquetado para VLAN 11), que luego puede enviarlo de
vuelta al conmutador sin etiquetar, y el conmutador lo reenviará al host de destino
en la red LAN.

Para completar el paquete, puede agregar etiquetas VLAN a sus VM en Proxmox


editando la interfaz de red de las VM en la pestaña de hardware (después de
hacer que la red VLAN sea consciente en Host> Sistema> Red>
vmbrN). Idealmente, tendría Proxmox conectado a un puerto en el conmutador
que no está etiquetado para una VLAN de administración (para acceder a
Proxmox) y permitiría VLAN etiquetadas en ese puerto para cualquier VLAN en la
que coloque sus VM (solo asegúrese de no hacerlo). ¡No ejecute ninguna máquina
virtual sin una etiqueta VLAN, o tendrán acceso a la interfaz de administración de
Proxmox!). Personalmente, tengo una VLAN de producción para bases de datos y
hosts web, una VLAN DMZ para cualquier host que esté abierto a Internet, una
VLAN LAB para jugar con cosas y un puñado de VLAN para separar estaciones de
trabajo y dispositivos en mi LAN.

Migración
Tómate tu tiempo aquí, las cosas pueden complicarse muy rápido si no te tomas tu
tiempo y piensas las cosas sobre la marcha, te sugiero que lo planifiques con
anticipación también, recorra cada paso y consideres cualquier cosa que pueda
convertirse en un problema. . Intentaré proporcionar una descripción general
amplia aquí que debería cubrir todo lo que hemos configurado en la serie hasta
ahora, pero tenga en cuenta que hay tantas consideraciones aquí que no puedo
dar cuenta de todo, no dude en ¡Extiende la mano si tienes algún inconveniente!

Comenzaría conectando el dispositivo pfSense al módem, luego su conmutador al


puerto LAN en pfSense, y todo lo demás en la red, excepto Proxmox, al
conmutador. Asegúrese de que todo funcione como se esperaba antes de mover
Proxmox.

Su enrutador WiFi debe estar conectado al puerto LAN en pfSense, o al


conmutador que está conectado al puerto LAN en pfSense, y debe colocarse en
modo de transferencia DHCP. Si no tiene un modo de transferencia DCHP,
simplemente no use el puerto WAN en el enrutador WiFi, conecte el cable de
enlace ascendente en uno de los puertos LAN.

Modo DHCP Passthrough: deshabilita el servidor DHCP en el enrutador y asume


que hay un servidor DHCP en algún otro lugar de la red (pfSense), también debe
deshabilitar NAT o tener esa opción.

A continuación, es posible que deba cambiar la dirección IP y la puerta de enlace


para que el host Proxmox se ajuste a la red pfSense o la VLAN que creó, esto se
puede hacer en Host> Sistema> Red> vmbr0, no olvide marcar la casilla "VLAN
”Si va a utilizar VLAN. Guarde los cambios y apague Proxmox antes de continuar.

Si no necesita cambiar la dirección IP de Proxmox o habilitar las VLAN, puede


mover el cable de red a su conmutador ahora. Inicie Proxmox si es necesario y
nuevamente, asegúrese de que esté funcionando, los reenvíos de puerto aún no
funcionarán, pero debe tener acceso a la página de administración de Proxmox.

Ahora podemos ir a cada VM, en Hardware, y cambiar el dispositivo de red para


usar la interfaz principal (vmbr0) (agregue su VLAN aquí si también las está
usando), y apagar la VM pfSense en Proxmox. Compruebe que las máquinas
virtuales obtengan las direcciones IP esperadas y que se pueda acceder a ellas
mediante la dirección IP.

Finalmente, elimine las anulaciones de dominio en el hostsarchivo de su estación


de trabajo , estas ahora deberían ser enrutables en la red porque pfSense está
administrando DNS para toda la red. En cuanto a los hosts o dominios que están
detrás de un proxy inverso como NGINX, diríjase a Services> DNS Resolver en su
host pfSense físico y agregue una anulación de host para cada dominio que
apunte al proxy inverso, y deberían ser accesibles sin ningún manipulación del
archivo de hosts en su estación de trabajo.

Módem puente
IMPORTANTE: No conecte su módem a menos que el único dispositivo
conectado sea la máquina pfSense o algún otro cortafuegos.

Este es un paso opcional, y nuevamente, hay muchos modelos diferentes de


módem, pero debería poder encontrar instrucciones buscando "(el nombre de su
módem) habilitar el modo puente" o algo similar.

Conectar su módem simplemente lo pone en modo "tonto", se conecta a Internet y


eso es todo. cuando conecta pfSense, pfSense obtiene una dirección IP pública
directamente de su ISP. Esto es útil de muchas maneras, lo más importante es
que elimina el módem como punto de configuración.

Dado que generalmente se alquilan a un ISP y, de manera predeterminada, están


configurados para configurar una red NAT básica que será segura para los
consumidores, no necesitamos nada de eso y no debemos preocuparnos por la
configuración del módem.

También descubrí que puedo conectar un puerto adicional en mi caja pfSense al


módem nuevamente y configurar WAN dual con diferentes direcciones IP públicas
(esto puede estar limitado por algunos ISP), lo cual es muy útil para jugar con
servidores de correo y tal.

También podría gustarte